64位操作系統下IIS報“試圖加載格式不正確的程序”錯誤

緣由:在64位操作系統下IIS發佈32位的項目,報“項目依賴的dll無法讀取,試圖加載格式不正確的程序”錯誤。

 

原因:程序集之間的通訊要麼全是64位環境下的,要麼全是32位環境下的。不能混編訪問。不然會出現“試圖加載格式不正確的程序”的錯誤。

 

解決方法:

【C/S】

運行C/S程序比較簡單,直接在Build C/S程序的時候顯式指定爲X86(64位系統默認爲X64)就可以了。

【B/S】

運行B/S稍稍複雜點。在建立網站的時候,又分爲兩種情況。

A:建立的是“項目”:這個時候跟 C/S 的處理是一樣。

B:建立的是“網站”:只需要修改IIS的配置就可以了。

i)“cscript %systemdrive%/inetpub/adminscripts/adsutil.vbs set w3svc/appPools/enable32bitapponwin64 1

(enable32bitapponwin64爲1代表可運行32位應用程序),該項可以通過 “命令行”執行一次。(此命令的作用是使IIS能夠註冊32位的.net FW)

ii)64位OP默認是在IIS下注冊了64位的.net Framework的,因此還必須再註冊一個32位的.net Framework

C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727>  aspnet_regiis.exe -i

 

 

另附:64位windows IIS 32位與64位轉換方法

 

64位版本的iis並不提供Microsoft OLE DB Provider for Jet驅動支持,所以,如果想在64位windows下使用asp或者asp.net連接access,需要將iis以32位的模式進行連接。以下轉載自其他網站的64位系統下32位iis與64位之間轉換的方法。

ASP.NET 2.0,32 位版本
要運行 32 位版本的 ASP.NET 2.0,請按照以下步驟操作:
1. 單擊“開始”,單擊“運行”,鍵入 cmd,然後單擊“確定”。
2. 鍵入以下命令啓用 32 位模式:
cscript %SYSTEMDRIVE%/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
3. 鍵入以下命令,安裝 ASP.NET 2.0(32 位)版本並在 IIS 根目錄下安裝腳本映射:
%SYSTEMROOT%/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe -i
4. 確保在 Internet 信息服務管理器的 Web 服務擴展列表中,將 ASP.NET 版本 2.0.40607(32 位)的狀態設置爲允許。

ASP.NET 2.0,64 位版本
要運行 64 位版本的 ASP.NET 2.0,請按照以下步驟操作:
1. 單擊“開始”,單擊“運行”,鍵入 cmd,然後單擊“確定”。
2. 鍵入以下命令禁用 32 位模式:
cscript %SYSTEMDRIVE%/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
3. 鍵入以下命令,安裝 ASP.NET 2.0 版本並在 IIS 根目錄下安裝腳本映射:
%SYSTEMROOT%/Microsoft.NET/Framework64/v2.0.50727/aspnet_regiis.exe -i
4. 確保在 Internet 信息服務管理器的 Web 服務擴展列表中,將 ASP.NET 版本 2.0.40607 的狀態設置爲允許。
注意:ASP.NET 2.0 的內部版本可能隨當前發行的內部版本的變化而變化。這些步驟適用於內部版本 2.0.40607。

 

參考資料:

http://blog.csdn.net/wildboy2001/article/details/5792804

http://kitleer.blog.163.com/blog/static/9177857920102115045194/

http://topic.csdn.net/u/20100530/10/9fe9cea0-f759-4099-a840-2f57d9f63e97.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章