這種問題主要出現在使用應用程序級別的地址重寫。如果你將一個動態的地址重寫成虛擬的其它擴展名或者不帶擴展名的地址,通常在IIS5.1和II6.0中,訪問這樣一個實際不存在的地址,首先會被Web服務器返回404;所以我們,要讓Web服務器在執行地址的請求之前,不確認地址是不是存在的。
具體操作如下:
1、打開IIS服務管理器
2、選擇做過地址導向(通常是UrlRewrite或Routing)的網站或虛擬目錄
3、在右鍵“屬性”界面中選擇“主目錄”(網站)或“虛擬目錄”(虛擬目錄)選項卡;單擊配置按鈕,並在“應用程序配置”界面的“映射”選項卡的“插入通配符應用程序映射(執行順序)”處點擊“插入”,然後選擇.net的isapi,通常是“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”
4、最重要的一步,去掉“確認文件是否存在”前面的勾,然後確定。
如果是小範圍的,或者有具體的擴展名的映射,建議選擇擴展映射,就是在添加一個指定的擴展名,然後指定處理的此類文件的擴展程序。確定之前,同樣需要去掉“確認文件是否存”前面的勾。
例如,我要將“/news/default.aspx?id=123”這樣的地址重寫爲“news/123.html”這樣的形式,那麼我就要在那個網站屬性的配置就加入對“.html”擴展名的映射,當然,仍然是需要“aspnet_isapi.dll”這個擴展來進行處理。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 iis6.0映射配置
IIS配置:網站->屬性->目錄->配置(G)...->映射->應用程序擴展->添加
可執行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
擴展名:.html
動作:限制爲 GET,HEAD,POST,DEBUG
腳本引擎:選中
確認文件是否存在:不選
主目錄裏點配置,選擇插入
c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
確認文件是否存在 前的勾號去掉
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2 iis5.1映射配置BUG
微軟的解釋:http://support.microsoft.com/?id=317948#top
當您在運行 Microsoft Windows XP 專業版的計算機上 Internet Information Services (IIS) 中添加應用程序映射確定 按鈕是不可用的後鍵入或瀏覽到.exe 文件或.dll 文件的路徑,然後鍵入文件擴展名。
要變通解決此問題,請按照下列步驟操作:
- 用鼠標右鍵單擊單獨的網站或 網站 文件夾,然後單擊 屬性。
- 在 主目錄 選項卡上單擊 $ 配置。
- 在 應用程序配置,下單擊 添加,然後單擊 映射 選項卡。
- 添加/編輯應用程序擴展名映射 對話框打開的狀態下,單擊 瀏覽 選擇從 Web 服務器上的本地路徑的.exe 文件或.dll 文件。
注意您必須在 可執行文件 的文本框中鍵入一個有效的文件路徑或 確定 按鈕仍不可用。要確保您輸入一個有效的路徑,最簡單的方法是通過使用瀏覽 按鈕選擇文件。 - 可執行文件 的文本框中顯示該路徑後,單擊在 可執行文件 文本框中初始化該路徑。
- 單擊 擴展 空間,然後鍵入文件擴展名。
注意您必須在 擴展名 文本框中輸入句點 (.) 前面的擴展名或 確定 按鈕仍不可用。 - 當 確定 按鈕將變爲活動狀態,單擊 確定 以繼續。
IIS7.0
處理程序映射->添加腳本映射
請求路徑:.html
可執行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
請求限制->謂詞:限制爲 GET,HEAD,POST,DEBUG