现有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…任何人都可以帮助我在这个或任何资源,所以我可以理解。

如果有人能告诉我发生了什么事,我会很高兴的。

现有asp.net项目没有新的控制器功能正在工作,显示404

您可以尝试以下几个故障排除步骤:

  1. 观察Fiddler中的调用。电话被取消了吗?如果是,它符合你的期望吗?
  2. 安装RouteDebugger(使用NuGet)并启用它。这是一个很好的工具,可以帮助你看到你的路线发生了什么。它会告诉你哪些路由规则被击中。

注:对于类似的问题,您可能需要使用"asp.net-mvc"标签之一。

有的只需改变路由规则顺序即可解决问题。我不得不做一次,让我的应用程序找到路线。尝试更改Global.asax.cs文件中的路由顺序。将登录路由置于默认路由之前。有时这可能就是问题所在!

我发布这个答案只是因为它可能会帮助其他乞丐的原因。当我在处理上面的问题时,我几乎是asp.net的初学者。但后来我发现了原因,但忘了更新结果。问题是,客户给我已经构建的版本,而不是源代码。后来,我得到了完整的源代码,并能够进行修改。