.net 确定webapp代码是否在Azure webrole中运行

.net 确定webapp代码是否在Azure webrole中运行,.net,azure,azure-web-roles,.net,Azure,Azure Web Roles,确定我的web应用程序代码是否在Azure web角色(或模拟器)中运行的最佳方法是什么 我需要配置依赖项注入容器,并且不希望依赖于任何特定于Azure的程序集,除非我在Azure中运行 这两个答案都要求引用Azure特定的程序集,我希望在我的内部部署场景中阻止这些程序集 更新:我真的在运行时环境中寻找可以从web应用程序代码中查询的东西。您可以通过web.config/app.config/ServiceConfiguration.cscfg设置来完成此操作,该设置仅在您想要的特定环境中设置

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

我需要配置依赖项注入容器,并且不希望依赖于任何特定于Azure的程序集,除非我在Azure中运行

这两个答案都要求引用Azure特定的程序集,我希望在我的内部部署场景中阻止这些程序集


更新:我真的在运行时环境中寻找可以从web应用程序代码中查询的东西。

您可以通过
web.config
/
app.config
/
ServiceConfiguration.cscfg
设置来完成此操作,该设置仅在您想要的特定环境中设置

添加一个参数,例如:

<Setting name="PaaS" value="true" />
如果不存在
cscfg
设置,则
CloudConfigurationManager.GetSetting
将返回,并检查
web.config
和/或
app.config


在本地IIS下运行时,请在
WebRole
中设置此项,但不要在
web.config
中设置,以获取所需的行为。

您可以通过门户(或ARM模板)为web应用设置应用程序设置,然后在代码中检查其值


添加一个只会出现在Azure部署中的编译符号,然后在依赖项配置中使用
#if Azure
。我不希望为本地和Azure生成单独的程序集。请参阅@BrendanGreen我想知道我的代码是否作为PaaS web角色而不是Azure网站运行。web角色中似乎没有设置任何特定于Azure的环境变量。您可以更具体地说明您所询问的依赖关系类型吗?是的,这会起作用,但还需要我引用特定于Azure的程序集以获取CloudConfigurationManager。另外,我想确定我是否从运行时环境而不是应用程序配置在Azure中运行。在角色启动时设置环境变量如何?是的,我试过了。它不起作用。我明天早上再试一次。
public bool IsPaaS
{
    get
    {
        var res = false;
        var val = CloudConfigurationManager.GetSetting("PaaS") ?? "false";
        Boolean.TryParse(val, out res);
        return res;
    }
}
var isPaaSSetting = Environment.GetEnvironmentVariable("IS_PAAS");
var isPaaS = !string.IsNullOrEmpty(isPaaSSetting) && isPaaSSetting.ToUpper() == "TRUE";
if (isPaaS) {...}