在Web或Worker角色之外引用Microsoft.WindowsAzure.ServiceRuntime

本文关键字:引用 Microsoft WindowsAzure ServiceRuntime Web Worker 角色 | 更新日期: 2023-09-27 18:28:31

我有一个场景,需要能够在Web/Worker角色之外使用Microsoft.WindowsAzure.ServiceRuntime

具体来说,我有以下代码

public static RoleInstanceEndpoint ResolveIP()
{
    if (RoleEnvironment.IsAvailable)
    {
        RoleInstance instance = RoleEnvironment.CurrentRoleInstance;
        RoleInstance RelatedWCFInstance = RoleEnvironment.Roles["MyServiceRoleName"]
                                                            .Instances
                                                            .Where(o => o.UpdateDomain == instance.UpdateDomain)
                                                            .FirstOrDefault();
        if (RelatedWCFInstance != null)
            return RelatedWCFInstance.InstanceEndpoints.Where(o => o.Value.Protocol == "tcp").FirstOrDefault().Value;
    }
    return null;
}

当在RoleEntryPoint.OnStart事件内运行时,此代码成功执行,但当我尝试在单独的exe中执行此代码时,该exe是通过Azure启动任务触发的

<Startup>
  <Task commandLine="StartupMagic.exe" taskType="simple" executionContext="elevated" />
</Startup>

我收到以下错误

The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception.

请有人确认是否可以在Web或Worker角色之外引用此库?如果是的话,就我可能做错了什么提供任何建议?

在Web或Worker角色之外引用Microsoft.WindowsAzure.ServiceRuntime

检查innerException导致显示以下消息:

"混合模式程序集是根据运行时的v2.0.50727版本构建的,如果没有其他配置信息,就无法在4.0运行时中加载。"

混合模式汇编中描述的解决方案是针对解决此问题的运行时v2.0.50727版本构建的。