Я только что начал новую программу С# 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)
Как и другие мои сайты, этот настраивается в виртуальном каталоге через Visual Studios. В частности, я установил «Не открывать страницу», «Локальный IIS» с обычным URL-адресом: http://localhost/VIRTUALDIRECTORY
Я нажал «Создать», и это произошло, в IIS есть VIRTUALDIRECTORY с (по крайней мере, кажется) теми же настройками, что и другие мои виртуальные каталоги.
Единственное отличие этой программы от других состоит в том, что я, по сути, копирую программу VB.NET MVC на C#. Поэтому я создал пустую программу C# MVC, затем скопировал и преобразовал классы. Ошибок компиляции (очевидно) нет, но я уверен, что есть настройка или что-то, что я не понял, что вызывает это.
Кто-нибудь еще знает, как это решить?
Я ссылаюсь на последнюю версию MVC (5.2.3) через nuget.
DefaultAccount
. Два других маршрута в настоящее время конфликтуют. Вы можете сделать их более конкретными: 1) удалить значения по умолчанию в тех случаях, когда они уже указаны в URL-адресе, сделав их обязательными 2) добавить ограничение для совпадения только в определенных случаях 3) добавить литералы к вашим URL-адресам, чтобы они совпадали только в определенных случаях. См. раздел Маршрутизация ASP.NET. - person NightOwl888   schedule 23.03.2016