簡體   English   中英

IIS是否針對Azure雲服務運行x64或x86?

[英]Is IIS running x64 or x86 for Azure Cloud Services?

我正在嘗試在使用Azure Cloud Services部署的網站中運行一些本機c ++代碼,並且遇到了BadImageFormatException。

我已經管理了在WebRole本身中加載並運行的dll,但是在訪問該網站時,拋出YSOD,但它無法加載我的DLL。

本機代碼是針對x64構建的,我推測這就是問題所在。 我需要本機代碼為x64。 IIS不支持此功能嗎?我是否可以做一些與雲服務有關的事情以告訴IIS使用64位?

我嘗試使用DependencyWalker來查看是否可以找出缺少的依賴項,並使用問號標記以下內容。 如果那對任何人都意味着什么。

API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL   
API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL

聽起來像是只有64位的環境,

http://msdn.microsoft.com/en-us/library/windowsazure/hh694038.aspx

http://blogs.msdn.com/b/haniatassi/archive/2009/03/20/using-a-32bit-dll-in-the-windows-azure.aspx

因此,當您遇到BadImageFormatException ,需要進一步研究哪個庫的位錯誤。

DependencyWalker中顯示的奇怪項目是Microsoft在Windows源代碼編譯期間使用的私人物品,通常您可以放心地忽略它們。

您可以通過使用啟動任務調用簡單腳本來更改IIS設置。

在包含以下內容的解決方案中添加setup.cmd文件:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.enable32BitAppOnWin64:true

     exit /b 0

將此文件的“ Copy to Output Directory設置為Copy Always

將這些xml添加到您的ServiceDefinition.csdef文件。

<Startup>
  <Task commandLine="setup.cmd" executionContext="elevated" taskType="simple" />
</Startup>

再次部署時,IIS將配置為以32位運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM