我刚开始一个新的C#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
我点击了Create并且确实如此,IIS中有VIRTUALDIRECTORY(至少看起来像)与我的其他虚拟目录的设置相同。
与其他程序相比,这个程序的唯一区别是我本质上是将一个VB.NET MVC程序复制到C#。所以我创建了一个空的C#MVC程序,然后复制并转换了类。 (显然)没有编译错误,但我确定有一个设置或某些东西,我还没想到会造成这种情况。
有没有其他人知道如何解决这个问题?
我通过nuget引用最新的MVC(5.2.3)。
答案 0 :(得分:0)
不确定这是否适用于其他任何人,但问题是我自己的问题。
我将我的控制器拆分为多个"部分"类和代码转换过程中没有一个被标记为" public"。
卫生署!