(转)关于X64位系统IIS7下支持32位asp.net程序
?
最近在windows2008 x64位系統下的IIS7下部署asp.net程序。
vs2005或vs2008默認的情況下是Any cpu 的也就是支持x86和x64兩種系統的。可我的程序在引用了一個三方dll組件時引起了這樣的錯誤:
?
錯誤“/test”應用程序中的服務器錯誤。 --------------------------------------------------------------------------------未能加載文件或程序集“XXX”或它的某一個依賴項。試圖加載格式不正確的程序。 說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.BadImageFormatException: 未能加載文件或程序集“XXX”或它的某一個依賴項。試圖加載格式不正確的程序。
源錯誤:
執行當前 Web 請求期間生成了未處理的異常。可以使用下面的異常堆棧跟蹤信息確定有關異常原因和發生位置的信息。 ?
程序集加載跟蹤: 下列信息有助于確定程序集“XXX”無法加載的原因。
警告: 程序集綁定日志記錄被關閉。 要啟用程序集綁定失敗日志記錄,請將注冊表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)設置為 1。 注意: 會有一些與程序集綁定失敗日志記錄關聯的性能損失。 要關閉此功能,請移除注冊表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。
?
?
?在網上搜索了N久。查詢到如下信息。
ASP.NET程序在編譯的時候默認是Any CPU,即編譯的程序可以在X86、X64系統平臺上運行。若希望我們的ASP.NET程序運行在X64系統上,我們所要做的僅僅是部署IIS,修改配置。 若想程序運行于IIS32位模式下,即運行在.net framwork32位下進行如下配置: 1.cscript? %systemdrive%\inetpub\adminscripts\adsutil.vbs set? w3svc/appPools/enable32bitapponwin64 1 修改IIS配置,允許32位程序運行 2.C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i?? 為IIS注冊asp.net32。注冊后在IIS的web擴展里顯示的是Asp.net2.0.*32bit。 3.Web擴展里允許 Asp.net2.0.*32bit運行。運行的是w3wp32.exe進程。 二.64位模式 1.cscript? %systemdrive%\inetpub\adminscripts\adsutil.vbs set? w3svc/appPools/enable32bitapponwin64 0 默認就是0,若原來運行了32位程序,則需要重新設置為0。 2.C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis - i?? 為IIS注冊64為Asp.NET。注冊了64位ASP.NET的IIS在Web擴展里顯示的是Asp.net2.0.*。 3.Web擴展里允許 Asp.net2.0.*運行。運行的是w3wp.exe進程。?
?
?
處理后還是沒有出現“w3wp32.exe進程”。
但我的 Web擴展里面是有, Asp.net2.0的32位設置為允許的。
后新建了應用程序池,在新建的應用程序池的“高級設置”里面,把“啟用32位應用程序”設置為true。
?程序可以運行了。
因為我的機器已經設置過,cscript? %systemdrive%\inetpub\adminscripts\adsutil.vbs set? w3svc/appPools/enable32bitapponwin64 1 為32位。
為了測試,我又把它設置為64位:cscript? %systemdrive%\inetpub\adminscripts\adsutil.vbs set? w3svc/appPools/enable32bitapponwin64 0
此時,程序還是可以運行。
所以我認為:不用按照上面的1,2,3步設置開啟32位。僅僅設置應用程序池中“啟動32位應用程序”為true。此時應該就可以運行32位的程序了。
?
如果有人在X64位系統上,運行32位的asp.net程序,可以直接試試用把“啟用32位應用程序”設置為true。的方法。無論是否成功,請告知。謝謝。
總結
以上是生活随笔為你收集整理的(转)关于X64位系统IIS7下支持32位asp.net程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt4小技巧——QTextEdit自动滚
- 下一篇: 使用jq的toggle函数实现全选功能遇