2014-10-01 76 views
0

如果我创建一个控制台应用程序,只是想获得实例名称我试着通过访问天青RoleEnvironment从控制台应用程序

RoleEnvironment.CurrentRoleInstance.Id 

得到它,但这已经无法与外例外:

角色发现数据不可用

和内部异常:

'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment'的类型初始值设定项引发了 异常。 - 无法加载文件或程序集'msshrtmi, 版本= 2.4.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或 其依赖项之一。该系统找不到指定的文件。

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

+1

显然有对'msshrtmi'的依赖。它在GAC中吗? – sharptooth 2014-10-01 11:02:44

+0

我现在将它包含在“复制到本地”中。内部异常消失了,但外部异常仍然存在。 – ThisWillDoIt 2014-10-01 11:24:32

回答

0

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

稍微更稳健的方法是将您的实例ID包装成一个方法,像...

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

我在不同的Azure虚拟机中尝试过它,并且RoleEnvironment.IsAvailable始终返回false。 – ThisWillDoIt 2014-10-08 12:38:02

相关问题