天天看點

IIS7上部署Asp.Net4.0時UrlRouting的若幹問題

vs2010開發環境中一切運作正常,結果部署到IIS7上以後,首先遇到下面這個問題:

IIS7上部署Asp.Net4.0時UrlRouting的若幹問題

我确定伺服器上的asp.net4.0 已經啟用了(如下圖),對應的網站應用程式池也切換到了4.0,但還是這樣!

IIS7上部署Asp.Net4.0時UrlRouting的若幹問題

到msdn論壇上發現也有人遇到類似問題,解決辦法:

先檢測機器上是否安裝了4.0正式版以前的beta或rc版,如下圖

IIS7上部署Asp.Net4.0時UrlRouting的若幹問題

.net framework4 的正式版本号為4.0.30319,如果以前安裝過舊版本的4.0架構(如上圖中的v4.0.30128),請先在指令行下輸入 :

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -i

重新将.net4正式版注冊到IIS中

注:如果伺服器為64位系統,.net會同步安裝64位的 framework,如果是32位的系統則沒有Framework64這個目錄,這個運作完以後,檢查IIS中應用程式池的版本号是否為正式版本号

IIS7上部署Asp.Net4.0時UrlRouting的若幹問題

這樣處理完了以後,網站已經能跑起來了,但是又遇到了第二個問題:

IIS7上部署Asp.Net4.0時UrlRouting的若幹問題

如上圖,因為公司的項目應用了一些以前的第三方元件,應用程式池無法以Integrated內建模式運作(不相容),是以隻能選Classic經典模式,實踐後發現經典模式下url路由功能無法使用:

IIS7上部署Asp.Net4.0時UrlRouting的若幹問題

又百度一圈後,找到了解決辦法:在網站的功能(Feature)視圖下,找到Handler Mappings(Handler映射)并輕按兩下

IIS7上部署Asp.Net4.0時UrlRouting的若幹問題

添加一個Wildcard Script Map,如下圖

IIS7上部署Asp.Net4.0時UrlRouting的若幹問題

即:将所有字尾檔案的請求,全部交由Framework64\v4.0.30319\aspnet_isapi.dll來處理

ok,asp.net4.0的路由功能總算在經典模式下運作正常了(注:如果是內建模式,是沒有該問題的)

繼續閱讀