C# ASP.NET MVC 4控制器失败找不到与名为“帐户”的控制器匹配的类型
我正在尝试使此URL正常工作: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
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。您的控制器是否位于默认控制器文件夹中?或者你是在另一个项目上写的?