Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC 4控制器失败找不到与名为“帐户”的控制器匹配的类型_C#_Asp.net_Asp.net Mvc 4 - Fatal编程技术网

C# ASP.NET MVC 4控制器失败找不到与名为“帐户”的控制器匹配的类型

C# ASP.NET MVC 4控制器失败找不到与名为“帐户”的控制器匹配的类型,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,我正在尝试使此URL正常工作: http://localhost:41359/account/login 这是我创建的MVC控制器: namespace CTHRC.Roti.Web.UI.Controllers { public class AccountController : Controller { [HttpGet] public ActionResult Login() { if (!WebSe

我正在尝试使此URL正常工作:

http://localhost:41359/account/login
这是我创建的MVC控制器:

namespace CTHRC.Roti.Web.UI.Controllers
{
    public class AccountController : Controller
    {
        [HttpGet]
        public ActionResult Login()
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("ModelContext", "Users", "Id", "UserName", autoCreateTables: true);
            }
            return View();
        }
     }
}
每次我访问该URL时,都会收到以下错误消息:

{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:41359/account/login'.","MessageDetail":"No type was found that matches the controller named 'account'."}
我尝试向其中添加MapRoute,但仍然出现相同的错误:

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

            routes.MapRoute(
                name: "Account",
                url: "account/{action}/{id}",
                defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
            );
        }
    }

我做错了什么?

当你添加路线时,它总是试图根据你添加路线的顺序找到一些东西。因此,如果您先放置一个通配符,它将永远不会转到下一个通配符

试试这个:

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Account",
                url: "account/{action}/{id}",
                defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
            );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

        }
    }

当您添加路由时,它将始终尝试根据您添加路由的顺序查找某些内容。因此,如果您先放置一个通配符,它将永远不会转到下一个通配符

试试这个:

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Account",
                url: "account/{action}/{id}",
                defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
            );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

        }
    }

你想用AJAX实现这一点吗?顺便说一下,你应该把更具体的路线放在更一般的路线之前。当您定义了路由时,由于默认路由满足条件,因此将永远无法到达帐户路由。在默认路由之前移动帐户映射时,我仍然会遇到相同的错误…有其他建议吗?没有,我只是尝试在浏览器中转到该URL。您的控制器是否位于默认控制器文件夹中?或者你是在另一个项目上写的?你想用AJAX实现它吗?顺便说一下,你应该把你更具体的路线放在你更一般的路线之前。当您定义了路由时,由于默认路由满足条件,因此将永远无法到达帐户路由。在默认路由之前移动帐户映射时,我仍然会遇到相同的错误…有其他建议吗?没有,我只是尝试在浏览器中转到该URL。您的控制器是否位于默认控制器文件夹中?或者你是在另一个项目上写的?