ASP.NET MVC 4控制器失败未找到与名为“account”的控制器匹配的类型

时间:2014-06-23 15:53:41

标签: c# asp.net asp.net-mvc-4

我想让这个网址正常工作:

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 }
            );
        }
    }

我做错了什么?

1 个答案:

答案 0 :(得分:-1)

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

试试这个:

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 }
            );

        }
    }