如何在Azure SDK 2.0中使用CloudFX

本文关键字:CloudFX Azure SDK | 更新日期: 2023-09-27 18:17:26

所以,我使用CloudFX与Azure的SDK 2.0。当我在控制台应用程序中在Azure环境(既不是云也不是模拟器)外运行我的worker角色时,一切都很顺利。

当我试图在模拟器或云上,我得到了一个AggregateException与此信息:

{"The type initializer for 'Microsoft.Experience.CloudFx.Framework.Diagnostics.TraceManager' threw an exception."}
Could not load file or assembly 'Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
   at Microsoft.Experience.CloudFx.Framework.Diagnostics.HybridTraceEventProvider..ctor(String providerName, Guid providerGuid)
   at Microsoft.Experience.CloudFx.Framework.Diagnostics.TraceManager.<>c__DisplayClass1.<Create>b__0(Guid guid)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at Microsoft.Experience.CloudFx.Framework.Diagnostics.TraceManager.Create(String providerName, Guid providerGuid)
   at Microsoft.Experience.CloudFx.Framework.Diagnostics.TraceManager..cctor()

所以我试图使这个程序集重定向没有成功:

<dependentAssembly>
      <assemblyIdentity name="Microsoft.WindowsAzure.Diagnostics" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>

似乎CloudFX仍然绑定/引用SDK 1.8。有人能帮我们解决这个问题吗?

谢谢!

如何在Azure SDK 2.0中使用CloudFX

在MSFT家伙Valery的帮助下,我能够通过双重检查我的配置来解决这个问题,确保没有任何东西指向1.8.0.0版本,并且我添加了assemblyBinding重定向配置。

虽然我们没有支持Azure SDK 2.0的CloudFX新版本,但你需要做的就是在配置中手动添加runtime/assemblyBinding/部分的重定向:

<dependentAssembly>
      <assemblyIdentity name="Microsoft.WindowsAzure.Diagnostics" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>

和特定于azure的跟踪监听器AzureDiagnostics明确指向Microsoft.WindowsAzure.Diagnostics version=2.0.0.0

有了它,你应该能够使用CloudFX与Azure SDK 2.0