1

我有一个场景,我需要能够使用Microsoft.WindowsAzure.ServiceRuntimeWeb/Worker 角色的外部。

具体来说,我有以下代码

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但是当我尝试在通过 Azure 启动任务触发的单独 exe 中执行此代码时

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

我收到以下错误

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

有人可以确认是否可以在 Web 或 Worker 角色之外引用这个库?如果是这样,请就我可能做错的事情提供任何建议?

4

1 回答 1

1

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

“混合模式程序集是针对运行时版本‘v2.0.50727’构建的,如果没有额外的配置信息,则无法在 4.0 运行时中加载。”

并且混合模式程序集中描述的解决方案是针对运行时版本“v2.0.50727”构建的,用于解决此问题。

于 2013-09-07T16:53:51.500 回答