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