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://www.cnblogs.com/zgqys1980/p/3713076.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM