【问题标题】:Access Azure RoleEnvironment from console application从控制台应用程序访问 Azure RoleEnvironment
【发布时间】:2014-10-01 11:01:45
【问题描述】:

如果我创建一个控制台应用程序并且只想获取实例名称,我会尝试通过

RoleEnvironment.CurrentRoleInstance.Id

但这已经因外部异常而失败:

角色发现数据不可用

和内部异常:

类型初始化器 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' 抛出了一个 例外。 - 无法加载文件或程序集 'msshrtmi, 版本=2.4.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或 它的依赖项之一。系统找不到指定的文件。

是否有任何其他方式可以通过编程方式获取 Azure 实例名称,或者我的控制台应用程序是否需要一些特殊权限才能访问 RoleEnvironment?

【问题讨论】:

  • 显然存在对msshrtmi 的依赖。是在 GAC 中吗?
  • 我现在将它包含在“复制到本地”中。内部异常消失了,但外部异常仍然存在。

标签: c# .net azure assemblies


【解决方案1】:

您正在尝试访问可用的 RoleEnvironment 功能,因为您未在 Azure 环境/AppFabrix 中运行。我建议您使用 RoleEnvironment.IsAvailable 成员检查您运行的是否是 Azure 环境。

一种更稳健的方法是将您的实例 ID 包装到一个方法中,例如...

// Handcoded
private string ApplicationInstanceId(){
    return RoleEnvironment.IsAvailable ?
        RoleEnvironment.CurrentRoleInstance.Id :
        "RunningLocally!";
}

【讨论】:

  • 我在不同的 Azure VM 中尝试过,RoleEnvironment.IsAvailable 总是返回 false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多