2010-06-18 61 views
2

我在.Net 4.0上的IIS 7.5上部署了一個Asp.Net MVC 2 Web應用程序。當我選擇應用程序池爲Asp.Net v4.0經典我收到以下錯誤。當我選擇的應用程序池Asp.Net 4.0版集成爲什麼Asp.net mvc應用程序不能在Asp.Net Classic應用程序池上工作?

HTTP Error 403.14 - Forbidden 
The Web server is configured to not list the contents of this directory. 

同一應用程序工作正常。有誰知道這是什麼原因?

更新:我遵循以下網址的步驟。

http://www.asp.net/mvc/tutorials/using-asp-net-mvc-with-different-versions-of-iis-cs

我添加了一個地圖爲.mvc延伸和還修改了路由,如下所示。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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


      routes.MapRoute(
        "Root", 
        "", 
      new { controller = "Home", action = "Index", id = "" } 

現在,以下網址工作正常,我可以看到家庭/索引頁面。

http://myapp/home.mvc 

但是,這仍然給出了同樣的錯誤(HTTP錯誤403.14 - 禁止)

http://myapp/ 

,因爲我已經映射根首頁/ Index操作這應該有工作。

更新

這是IIS 7.5的Win 7旗艦版的Turbo黃金高級版64位系統上。應用程序池以集成模式運行。當我切換到經典之作時,所有的東西都像廣告一樣運作如果我在經典模式下運行我的應用程序,公共訪問權限應該如此。所以這裏是一個問題:如果我想如何在集成模式下運行它?

回答

5

在經典模式下,您需要執行通配符映射或在URI中的控制器名稱上使用「.mvc」擴展名。所以你必須將你的IIS ASP.NET配置中的* .mvc映射改爲或更改默認路由是這樣的:

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

這些方法肯定做的工作;的確,這是支持IIS 5-6的唯一方式。另一方面,在IIS 7中,我只是使用集成模式。

+0

雖然這大部分是真的。如果在.net 4中使用經典流水線,現在不需要使用通配符,現在有更好的無擴展名URL處理。我正在參考這篇文章http://haacked.com/archive/2010/12/22/asp-net-mvc-3-extensionless-urls-on-iis-6.aspx – cdmdotnet 2012-02-15 20:47:30

1

這是因爲路由在傳統模式下不起作用。在網絡上有一些解決方法,但其中大多數不能很好地工作。

下面是一些解釋和有關這個主題的幫助: http://www.asp.net/mvc/tutorials/using-asp-net-mvc-with-different-versions-of-iis-cs

你不要任何理由要使用集成?

+0

要清楚:Routing * does *工作,如果它被調用。訣竅是讓ASP.NET進入圖片* * System.Web.Routing本身工作正常。 – 2010-06-18 14:55:03

+0

我的開發機器上有IIS 7.5,但在Prod上它仍然是IIS 6.0。 – Amitabh 2010-06-18 15:00:47

2

集成是指IIS綜合管道模式:http://msdn.microsoft.com/en-us/magazine/cc135973.aspx

當集成管道模式是關閉的,因爲你正在輸入URL的請求不被路由到ASP.NET。此外,由於您正在訪問的文件夾中沒有default.aspx或類似的「默認文檔」,因此IIS默認嘗試列出目錄的內容。默認情況下,此設置在IIS中被禁用,因此您會收到403.13 Forbidden錯誤。

+1

如果您需要在IIS 6或IIS 7經典模式下使用ASP.NET MVC,請參閱本頁面的「使用IIS的舊版ASP.NET MVC」部分獲取詳細說明。有幾種設置可供您選擇:http://www.asp.net/mvc/tutorials/using-asp-net-mvc-with-different-versions-of-iis-cs – MicScoTho 2010-06-18 15:38:40

相關問題