1
我剛開始一個新的C#MVC程序。我有很多這些工作,但這一個沒有,我不明白爲什麼。MVC路由試圖在虛擬目錄上路由
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{action}",
defaults: new { controller = "Account", action = "LogOn" }
);
}
它給我這個錯誤:
System.Web.HttpException (0x80004005): The controller for path '/VIRTUALDIRECTORY' was not found or does not implement IController.
at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName)
at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
就像我的其他網站,這是通過視覺工作室虛擬目錄設置。具體來說,我把它設置爲「不要打開一個頁面」,「本地IIS」,只有一個典型的URL:http://localhost/VIRTUALDIRECTORY
我點擊創建和它做了,有VIRTUALDIRECTORY在IIS中(至少似乎)與我的其他虛擬目錄相同。
與其他程序相比,唯一的區別是我本質上是複製一個VB.NET MVC程序到C#。所以我創建了一個空的C#MVC程序,然後複製並轉換類。有(顯然)沒有編譯錯誤,但我敢肯定有一個設置或我沒有想出這是造成這種情況。
是否有其他人知道如何解決這個問題?
我正在通過nuget引用最新的MVC(5.2.3)。
可能不是你的問題,但「默認」路線處理所有額外的兩件事。另外,由於「默認」路線是第一個,所以其他兩個路線從來都不會發揮作用。 –
雅,我只是想讓它工作,所以我加了其他2. –
克里斯是對的。您的路由配置錯誤。應該從最具體到最不具體的路線排列路線。在這種情況下,最具體的路由是'DefaultAccount'。另外兩條路線目前有衝突。您可以通過以下方式使它們更具體:1)在URL中已提供默認值的情況下,使其成爲必需2)添加約束以僅在某些情況下匹配3)將文字添加到您的URL以便它們只匹配在某些情況下。請參閱:[ASP.NET路由](https://msdn.microsoft.com/en-us/library/cc668201.aspx)。 – NightOwl888