从控制台应用程序访问Azure RoleEnvironment

时间:2014-10-01 11:01:46

标签: c# .net azure assemblies

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

获取它
RoleEnvironment.CurrentRoleInstance.Id

但是这已经失败并带有外部异常:

  

角色发现数据不可用

和内部异常:

  

的类型初始值设定项   'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment'扔了一个   例外。 - 无法加载文件或程序集'msshrtmi,   Version = 2.4.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或   其中一个依赖项。系统找不到指定的文件。

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

1 个答案:

答案 0 :(得分:0)

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

稍微更健壮的方法是将您的实例ID包装到方法中,例如......

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