2014-11-06 64 views
1

我正在將部署從Azure網站的Web應用程序移至Cloud Service中的Web角色。我的代碼是在Web角色還是網站中運行?

遷移

部分已經涉及保留的角色配置一些本地存儲和改變與本地文件系統使用下面的口頭禪發現,有利於寫入路徑相互作用:

LocalResource tempStorageResource = RoleEnvironment 
             .GetLocalResource("SomeRoleStorage"); 
var targetFolderPath = tempStorageResource.RootPath; 

但是,我想保持在WebSite實例中的工作。我將編寫一個路徑提供程序,將實際位置抽象出來。部分實現需要檢測我是在本地運行/在調試器中運行,但我還需要知道運行的代碼是在WebSite還是WebRole下運行。我怎樣才能做到這一點?

public class AzurePathProvider : ILocalStoragePathProvider 
{ 
    public string GetStoragePath(string key) 
    { 
     var isWebRole = //????; 
     if(isWebRole) 
     { 
      LocalResource tempStorageResource = 
       RoleEnvironment 
        .GetLocalResource(key); 
      return tempStorageResource.RootPath; 
     } 
     else 
     { 
      return "/some/other/storage/location"; 
     } 
    } 
} 
+0

最簡單的事情就是在web.config中添加一個標誌嗎? – James 2014-11-06 11:22:42

+0

@詹姆斯:是的,那可行。 – spender 2014-11-06 11:24:24

+0

或者你可以檢查一個特定的環境變量,例如'WEBSITE_SITE_NAME' - 唯一的問題就是確保你的本地環境中設置了相同的變量。 – James 2014-11-06 11:25:50

回答

2

檢查RoleEnvironment.IsAvailable以確定代碼是否在Cloud Service中運行。當您的代碼在Cloud Service中運行時,它始終爲true,否則它將是false

此外,爲了檢測代碼是否在計算模擬器中運行,您可以檢查RoleEnvironment.IsEmulated以及RoleEnvironment.IsAvailable

相關問題