最近在單位新服務器上搭建基於.NET Framework4.0的網站,結果一切都安裝OK后,網站怎么都運行不起來(但是基於.NET2.0的網站能夠運行起來,很是奇怪),除了簡單的500錯誤外沒有任何線索。然后打開IIS7.5的跟蹤日志,發現提示錯誤為“ISAPIMODULE 不是有效的win32程序”。通過分析發現,原來是因為我們的網站是基於x86平台開發的,對應的ASP.NET 4.0應用程序池設置了“啟用32位管理”,所以網站會調用基於x86的isapi。可是在安裝.NET Framework4時本身是包含32位和64位的,為什么會有如此提示呢?后來只能一個一個卸載,爭取復原原始環境。
服務器背景:Windows 2008 R2 Standard 64bit(已安裝TFS2010,因為服務器資源短缺,只能是web和tfs共用一台服務器)。
操作步驟:
- 卸載IIS,因為isapi有問題,我們猜測是iis有問題——成功卸載
- 重新安裝IIS——出現錯誤
提示:錯誤: 嘗試安裝 IIS 管理控制台 失敗,錯誤代碼為 0x80070643。 安裝時發生嚴重錯誤
后來通過在網上多方查找,原來是因為和WAS (Windows Process Activation Service)服務有關,必須先卸載該功能才能安裝IIS。
這時,我突然覺得.NET4.0 32bit 運行有問題可能真的和這個服務有關(因為之前安裝的2008服務器都沒問題,只有這台不知道誰給裝上了這個WAS)。
於是在“服務管理器--》功能--》刪除功能”中,找到WAS,並刪除它,然后重新安裝IIS,安裝成功。
3. 重新安裝.NET 4.0 Framework
4. 部署網站
5. 修改應用程序池,啟用Win32,網站運行成功。
總結:
我認為這次之所以失敗,很有可能是因為某個服務導致的.NET Framework安裝順序不正確,結果isapi.dll識別不出來。如果遇上此類問題,最好還是重新安裝IIS,然后重新設置。通過aspnet_regiis的方法,有時可以,但有時不成功
--------------------------------------------------------------------------
再次總結:
今天有了新的發現,今天重新安裝WSS 3.0(Sharepoint)后,網站又不能用了,而且IIS的默認站點也被WSS給刪除了,看來應該是它搗的鬼,它的安裝修改了IIS的設置,網站下的應用程序出現了問題,以后得要多注意。我現在新建了一個默認網站,修改WSS的端口,能夠基本運行,但是有很多小問題,希望不要再重裝IIS了
