2014-02-19 72 views
0

我有一个应用程序到IIS 7的应用程序池中。我在应用程序中添加了一个新的虚拟目录。我的应用程序在http://localhost.com/上运行,我想在http://localhost.com/VirtualDirectory/上运行我的虚拟目录。我想这样做的原因是虚拟目录被用作应用程序。我想使用虚拟目录作为SubSite。我的问题是我无法访问虚拟目录下的控制器和视图。当我将ActionResult方法的返回结果更改为“return View(”/ VirtualDirectory/Views/Home/Index.cshtml“);”时,我可以访问它。我不想在每个返回的Action结果上对VirtualDirectory进行硬编码。ASP.NET MVC路由配置问题

我的路线是配置:

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
        name: "Home", // Route name 
        url: "{id}", // URL with parameters 
        defaults: new { controller = "Home", action = "Index" /*, id = ""*/ } // Parameter defaults 
      ); 

      routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Defaut", id = UrlParameter.Optional } // Parameter defaults 
      );    
     } 

我试图让下一个变化:

routes.MapRoute(
        "Default", // Route name 
        "VirtualDirectory/{controller}/{action}/{id}", // URL with parameters 
        new { controller = "Home", action = "Defaut", id = UrlParameter.Optional } // Parameter defaults 
       ); 

但是,当我尝试加载http://localhost.com/VirtualDirectory我已经得到了消息:

HTTP错误403.14 - 禁止 Web服务器被配置为不列出此目录的内容。

+1

你不应该需要在所有更改路由到一个虚拟目录 –

+0

下运行一个网站时,我不会让我得到了消息的变化: 虚拟路径“/Views/Home/Index.cshtml”地图到另一个应用程序,这是不允许的。 –

+0

你说得对。你解决我的问题男人。非常感谢你。 –

回答

1

您应用程序的路由选择在虚拟目录中运行时不需要进行任何更改。

但是,您仍然需要确保在整个应用程序中使用相对路径(不是绝对的/基于路径)。这与任何技术都是一样的。 /始终忽略虚拟目录。