C# IIS是否为Azure云服务运行x64或x86? 我试图在我的网站中使用Azure云服务来运行一些本地C++代码,我面临一些BadiMaGrimeExtExabor。

C# IIS是否为Azure云服务运行x64或x86? 我试图在我的网站中使用Azure云服务来运行一些本地C++代码,我面临一些BadiMaGrimeExtExabor。,c#,c++,iis,azure,C#,C++,Iis,Azure,我已经设法在WebRole本身中加载并运行dll,但是当访问网站时,会抛出YSOD,异常情况是它无法加载我的dll 本机代码是针对x64构建的,我推测这就是问题所在。我需要本机代码为x64。IIS不支持这一点,或者我可以做一些与云服务相关的事情来告诉IIS使用64位吗 我尝试使用DependencyWalker,看看是否可以找出缺少的依赖项,它用问号标记了下面的内容。如果这对任何人都有意义的话 API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL API-MS

我已经设法在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位的纯环境

因此,当您遇到
BadImageFormatException
时,需要进一步调查哪个库的位是错误的


DependencyWalker中显示的奇怪项是Microsoft在Windows源代码编译期间使用的私有项,通常您可以安全地忽略它们。

您可以通过在启动任务中调用简单脚本来更改IIS设置

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

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

     exit /b 0
将此文件的
复制到输出目录
设置为
始终复制

将这些xml添加到ServiceDefinition.csdef文件中

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


再次部署时,IIS将配置为以32位运行。

抱歉,您没有阅读“云服务”。我不关心azure网站。Webroles有自己的VM。刚刚编辑过,看起来Web角色是以64位运行的。谢谢。这就是我现在所处的位置,我试图调查它失败的原因。有趣的是,它实际上能够在WebRole本身中运行,但在IIS中使用时却不能。