You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

云服务扩展支持中Azure.Core版本不兼容问题求助

问题分析与解决方案

核心原因

从绑定日志能明显看出来,角色启动时加载的是E:\base\x64\WaIISHost.exe.Config,不是你Web项目里的web.config。Azure云服务Web角色的宿主进程是WaIISHost.exe,程序集绑定重定向规则得写到这个宿主的配置文件里,光改web.config没用——这就是为啥之前web.config配置没生效,改machine.config能临时解决,但镜像重置后就没了的原因。

正确解决方案

1. 给项目添加WaIISHost.exe.Config并配置重定向

在Web角色项目的根目录新建WaIISHost.exe.Config文件,把web.config里的assemblyBinding规则搬进去,完整内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Azure.Core" publicKeyToken="92742159e12e44c8" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-1.44.1.0" newVersion="1.44.1.0"/>
      </dependentAssembly>
      <!-- 其他需要的绑定重定向也可以加在这里 -->
    </assemblyBinding>
  </runtime>
</configuration>

右键这个文件,设置复制到输出目录为「始终复制」或者「如果较新则复制」,确保它能被打包到输出目录。

2. 通过ServiceDefinition.csdef配置启动任务,把文件复制到正确位置

云服务默认会把Web角色的输出放到approot/bin,但WaIISHost.exe在base\x64目录,所以得加个启动任务,把配置文件复制过去。打开ServiceDefinition.csdef,在你的WebRole节点下添加启动任务:

<WebRole name="YourWebRoleName" vmsize="Small">
  <!-- 保留你原来的其他配置 -->
  <Startup>
    <Task commandLine="copy ..\approot\bin\WaIISHost.exe.Config .\" executionContext="elevated" taskType="simple" />
  </Startup>
</WebRole>

这个任务会在角色启动时,把approot/bin里的配置文件复制到WaIISHost.exe所在的base\x64目录。

关于宿主配置文件的疑问解答

  • 存放位置:从日志路径能看到,WaIISHost.exe在E:\base\x64,对应的配置文件就得放在同目录下,名字必须是WaIISHost.exe.Config。
  • 能否随项目发布:完全可以,按上面的步骤把文件纳入项目,配置复制规则和启动任务,就能跟着云服务包一起部署到实例上。
  • csdef/cscfg的作用:ServiceDefinition.csdef用来定义云服务的结构、启动任务这些部署相关的配置,刚才的启动任务就是靠它实现的;cscfg是运行时参数配置文件,这个问题里不需要修改它。

验证步骤

部署完成后,远程登录角色实例,检查E:\base\x64目录下有没有WaIISHost.exe.Config,且内容和你配置的一致。之后重启角色实例,确认能正常启动,不再出现Azure.Core版本不匹配的错误。

内容的提问来源于stack exchange,提问作者Jason Butera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:25:17