iis運行出錯 大部分是沒有安裝.net 4.0
如題,這個錯誤google時一大堆各種各樣的解決辦法,但具體原因就沒怎么詳細介紹,
404.2就一個http status code, 在msdn上說:404.2 - ISAPI or CGI restriction 即IIS里的“ISAPI 或CGI 限制” 的配置有問題,
“ISAPI” 是供IIS加載和調用的DLL, 如果沒配置相關的ISAPI,就無法正確地解釋網頁的內容,
之所以會拋出后面“請求的內容似乎是腳本,因而將無法由靜態文件處理程序來處理”的錯誤信息,極有可能是沒配置相關ISAPI對頁面進行解釋,導致IIS默認把頁面當作靜態文件來解釋,所以出錯,
比如:用net4.0來開發的網站,但ISAPI沒配置有"ASP.Net_4.0_32bit"的DLL來對頁面程序進行托管,那么IIS肯定無法正確的運行aspx里的C#代碼,
解決方案:
1)先確認網站是基於那個netframework;
2) 然后到“應用程序池”里找網站對應的應用程序池(右擊網站-> 高級設置),雙擊程序池, 看程序池是否也網站的net framework版本相同,
注意:net2.0,net3.0,net3.5對應的net framework版本都是v2.0.50727,而net4.0則基於v4.0.30319
3) 右擊網站對應的 ”應用程序池 -> 高級設置“ 看”啟用32位應用程序“,如果網站是以32編譯的就要設為true, 否則為false, 一般都是32編譯的,所以都選為true;
4) 如果上面的配置都沒錯,那就到問題的本質部分,即ISAPI的配置:
a.選中網站->功能視圖-> 雙擊 ISAPI篩選器;
b.查看是否有與網站所基於的framework 對應的DLL, net2.0,3.0,3.5對應的DLL是ASP.Net_2.0.50727.0, net4.0是ASP.Net_4.0_32bit或ASP.Net_4.0_64bit;
c.若沒有對應的DLL,有可能是沒裝好IIS,即漏掉了東西,如果不知選擇裝哪些部分,就應該完整的把整個IIS裝完;
5)如果裝了vs再裝iis必須得對net framework 重裝一次, 運行cmd,輸入:
C:\Windows\Microsoft.NET\Framework\V4.0.30319\aspnet_regiis -i
注:C:\Windows\Microsoft.NET\Framework\V4.0.30319\ 是 netframework安裝對應的路徑;
如下圖:
6)重啟一下iis, 理論上應可以解決導致404.2 not found 的大部分問題了;