云服务扩展支持中的 Azure.Core 版本不受支持?

问题描述 投票:0回答:1

我们有一个仍部署为云服务的 Web API(扩展支持)。一切都很好,直到 Azure.Core 参考由于新的附加库依赖项而从 1.31.0 更新到 1.44.1。现在,这个角色还没有开始。我查看了 Windows 事件日志并能够确定问题。看来角色启动还是依赖1.31.0.0版本。但我不太确定这适用于哪里。

无法创建角色入口点:System.TypeLoadException:由于以下异常,无法加载角色入口点: -- System.IO.FileLoadException:无法加载文件或程序集“Azure.Core,Version=1.31.0.0,Culture=neutral,PublicKeyToken=92742159e12e44c8”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040) 文件名:'Azure.Core,版本=1.31.0.0,文化=中性,PublicKeyToken=92742159e12e44c8'

我们的 web.config 确实有适当的绑定重定向:

<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>

打开一些高级日志记录后,我能够看到启动在哪里检索其配置:

LOG: DisplayName = Azure.Core, Version=1.31.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8
 (Fully-specified)
LOG: Appbase = file:///E:/approot/bin
LOG: Initial PrivatePath = E:\approot\bin
Calling assembly : Azure.Storage.Blobs, Version=12.16.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: E:\base\x64\WaIISHost.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from D:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Azure.Core, Version=1.31.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8
LOG: Attempting download of new URL file:///E:/approot/bin/Azure.Core.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

我远程连接到机器并将绑定重定向添加到 machine.config 文件中,现在一切正常。但是,我觉得这不是完全正确的解决方案,因为我猜测此更改将在重新映像时丢失。有谁知道正确的解决方案是什么?看起来它可以期待一个主机配置文件,但根据日志,没有。它会在哪里寻找它,它可以与我的项目文件一起发布吗?

我猜它可以添加到 csdef 或 cscfg 配置中,但我不太确定它会去哪里。如有任何帮助,我们将不胜感激。

.net azure azure-cloud-services
1个回答
0
投票

我没有运气在这里得到答案,但我能够找到正在发生的事情的解释。 web.config 由 IIS 工作进程使用,但不会影响角色正在初始化的 WaIISHost 进程。

不幸的是,唯一的解决方案是通过修改 machine.config 或 WaIISHost.exe.Config 来完成我已经在做的事情。显然,我们需要将其作为角色启动任务来完成,而不是手动完成。

https://dzimchuk.net/be-aware-of-web-role-host-process/

© www.soinside.com 2019 - 2024. All rights reserved.