确定webappro代码是否在Azure webrole中运行

时间:2015-05-26 17:35:55

标签: .net azure azure-web-roles

确定我的Web应用程序代码是否在Azure Web角色(或模拟器)中运行的最佳方法是什么?

我需要配置一个依赖注入容器,除非我在Azure中运行,否则不要依赖任何特定于Azure的程序集。

this question的两个答案都需要引用Azure特定的程序集,我希望这些程序集能够阻止我的内部部署方案。

更新:我真的在运行时环境中寻找可以从我的网络应用程序代码中查询的内容。

2 个答案:

答案 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) {...}