2015-05-26 40 views
1

什麼是確定我的Web應用程序代碼是在Azure的Web角色(或仿真器)運行的最佳方式?確定是否web應用程序代碼在Azure中webrole運行或不

我需要配置一個依賴注入容器,不想承擔任何Azure的具體組件的依賴,除非我在Azure中快到。

兩個答案this question需要引用天青我想這阻止了我的預置場景的特定組件。

更新:我期待在運行時環境的東西,我可以從我的Web應用程序代碼查詢。

+0

添加只會出現Azure的部署編譯符號,然後用'#如果AZURE'在你的依賴配置。 – haim770

+0

我寧願不必爲內部部署和Azure生成單獨的程序集。 – MvdD

+0

查看http://stackoverflow.com/questions/25678419/how-to-check-if-code-is-running-on-azure-websites/25695126#25695126 –

回答

1

您可以通過web.config/app.config/ServiceConfiguration.cscfg設置爲只在您想要的特定環境中設置。

添加參數,例如:

<Setting name="PaaS" value="true" /> 

然後,在應用程序啓動時,獲得的價值:

public bool IsPaaS 
{ 
    get 
    { 
     var res = false; 
     var val = CloudConfigurationManager.GetSetting("PaaS") ?? "false"; 
     Boolean.TryParse(val, out res); 
     return res; 
    } 
} 

CloudConfigurationManager.GetSetting將回落,如果沒有cscfg設置存在,並檢查web.config和/或app.config

在本地IIS下運行以獲取您正在查找的行爲時,在WebRole中設置此項,但不在web.config中。

+0

是的,這是可行的,但也需要我參考Azure特定的程序集來獲取CloudConfigurationManager。另外,我想確定是從運行時環境運行在Azure中,而不是應用程序配置。 – MvdD

+0

角色啓動時如何設置環境變量? https://msdn.microsoft.com/en-us/library/azure/gg432991.aspx –

+0

是的,我試過了。它不起作用。明天早上再試一次。 – MvdD

0

您可以設置應用程序設置通過門戶網站(或ARM模板)您的Web應用程序,然後檢查你的代碼中它的價值。

App settings through the Azure Portal

var isPaaSSetting = Environment.GetEnvironmentVariable("IS_PAAS"); 
var isPaaS = !string.IsNullOrEmpty(isPaaSSetting) && isPaaSSetting.ToUpper() == "TRUE"; 
if (isPaaS) {...} 
相關問題