确定我的Web应用程序代码是否在Azure Web角色(或模拟器)中运行的最佳方法是什么?
我需要配置一个依赖注入容器,除非我在Azure中运行,否则不要依赖任何特定于Azure的程序集。
this question的两个答案都需要引用Azure特定的程序集,我希望这些程序集能够阻止我的内部部署方案。
更新:我真的在运行时环境中寻找可以从我的网络应用程序代码中查询的内容。
答案 0 :(得分: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
。
在WebRole
中设置此项,但在本地IIS下运行时不在web.config
中设置,以获取您要查找的行为。
答案 1 :(得分: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) {...}