2014-02-19 103 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

您應用程序的路由選擇在虛擬目錄中運行時不需要進行任何更改。

但是,您仍然需要確保在整個應用程序中使用相對路徑(不是絕對的/基於路徑)。這與任何技術都是一樣的。 /始終忽略虛擬目錄。