IIS 6 下發佈 ASP.NET MVC 造成 Directory Listing Denied

image

今天在將專案發佈到正式環境時發生了 Directory Listing Denied 的錯誤。

  • ASP.NET MVC 3
  • IIS6
  • .Net Framework 4

造成的原因

這個錯誤一開始看到會覺得是權限設定的問題,看到 Denied 就覺得是權限。但是仔細觀察一番之後才發現不是這樣,Directory Listing  指的是列出目錄清單,可是一般網頁應該只要開放瀏覽權限就可以了阿。難怪會權限不足。所以真正的問題點應該是在為什麼在執行瀏覽的時候會去要求列出清單。

其實是在 IIS6 預設情況下,都是用要求檔案副檔名來決定用什麼程序處理。相關設定在(網站>內容>主目錄>設定)。而在 ASP.NET MVC 則是利用 Route 來做對應,Request 對應的並不是檔案,而是直接由處理程序來處理。所以當 IIS6 在預設內容找不到檔案的時候,就會要求列出整個網站目錄,但是這個時候就因為權限不足而被阻止了。

解決方法

既然是因為這個原因,所以解決的方法就是將 aspnet_isapi.dll 可以在 Request 不是一個檔案的時候加入進行處理。

網站>內容>主目錄>設定

上方就是副檔名與執行檔的對應,而要做的部分是在萬用字元程式對應的地方加入 c:windowsmicrosoft.netframeworkv4.0.30319aspnet_isapi.dll。

image

image

image


ASP.NET 4.0 安裝在 IIS6 最常遇到的四個問題

asp.net – MVC 3 Deployment to IIS6 – Stack Overflow

ASP.NET MVC on IIS 6 Walkthrough

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *