2014-10-01 124 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

相關問題