MVC路由尝试在虚拟目录上路由

时间:2016-03-23 17:18:49

标签: c# asp.net-mvc asp.net-mvc-routing iis-8.5 asp.net-mvc-5.2

我刚开始一个新的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)。

1 个答案:

答案 0 :(得分:0)

不确定这是否适用于其他任何人,但问题是我自己的问题。

我将我的控制器拆分为多个"部分"类和代码转换过程中没有一个被标记为" public"。

卫生署!

相关问题