现有asp.net项目没有新的控制器功能正在工作,显示404
本文关键字:功能 工作 显示 控制器 net asp 项目 现有 | 更新日期: 2023-09-27 17:49:00
我正在现有的asp.net网站上工作,我从托管代码的客户端服务器获得代码。我能够在我的本地pc上运行项目,但是当我尝试添加新的控制器功能时,它只是显示http 404。[1]
例如,在AccountController.cs中有一个已经存在的登录函数
// GET: /Account/Login
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
if (WebSecurity.IsAuthenticated == true){
WebSecurity.Logout();
Session.Abandon();
}
ViewBag.ReturnUrl = returnUrl;
return View();
}
然后我复制这个函数并创建一个新的,如下所示,并复制视图文件并重命名为
//
// GET: /Account/AaLogin
[AllowAnonymous]
public ActionResult AaLogin(string returnUrl)
{
if (WebSecurity.IsAuthenticated == true)
{
WebSecurity.Logout();
Session.Abandon();
}
ViewBag.ReturnUrl = returnUrl;
return View();
}
Global.asax.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
routes.MapRoute(
"AaLogin", // Route name
"Account/AaLogin", // URL with parameters
new
{
controller = "Account",
action = "AaLogin",
id = UrlParameter.Optional
});
}
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "ViewListingNoAuth",
url: "{id}",
defaults: new { controller = "Listing", action = "PublicView"}
);
routes.MapRoute(
name: "socialMediaHooks",
url: "externalService/uploadFlyerToSocialMedia/{id}/{sName}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, name = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
但它仍然不工作,当我浏览/帐户/AaLogin…任何人都可以帮助我在这个或任何资源,所以我可以理解。
如果有人能告诉我发生了什么事,我会很高兴的。
您可以尝试以下几个故障排除步骤:
- 观察Fiddler中的调用。电话被取消了吗?如果是,它符合你的期望吗? 安装RouteDebugger(使用NuGet)并启用它。这是一个很好的工具,可以帮助你看到你的路线发生了什么。它会告诉你哪些路由规则被击中。
注:对于类似的问题,您可能需要使用"asp.net-mvc"标签之一。
有的只需改变路由规则顺序即可解决问题。我不得不做一次,让我的应用程序找到路线。尝试更改Global.asax.cs
文件中的路由顺序。将登录路由置于默认路由之前。有时这可能就是问题所在!
我发布这个答案只是因为它可能会帮助其他乞丐的原因。当我在处理上面的问题时,我几乎是asp.net的初学者。但后来我发现了原因,但忘了更新结果。问题是,客户给我已经构建的版本,而不是源代码。后来,我得到了完整的源代码,并能够进行修改。