Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Azure web app web.config文件中添加/设置新的环境变量_Azure_Azure Web App Service - Fatal编程技术网

如何在Azure web app web.config文件中添加/设置新的环境变量

如何在Azure web app web.config文件中添加/设置新的环境变量,azure,azure-web-app-service,Azure,Azure Web App Service,我在Microsoft Azure Web App上部署了一个应用程序。我已经创建了web.config文件 我有2个自定义域链接到我的web应用 api-stage.example.com api-prev.example.com 我想在访问API时设置1个名为PLATFORM的环境变量。 例如,当我使用api-stage.example.com访问api时,我想将平台的值设置为stage;当我使用api-prev.example.com访问api时,我想将平台的值设置为prev 我在下面的代

我在Microsoft Azure Web App上部署了一个应用程序。我已经创建了web.config文件

我有2个自定义域链接到我的web应用

  • api-stage.example.com
  • api-prev.example.com
  • 我想在访问API时设置1个名为PLATFORM的环境变量。 例如,当我使用api-stage.example.com访问api时,我想将平台的值设置为stage;当我使用api-prev.example.com访问api时,我想将平台的值设置为prev

    我在下面的代码中访问这个env变量
    $platform=getenv('platform')

    我的web.config文件的内容如下所示

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <httpProtocol allowKeepAlive="true">
            </httpProtocol>
            <staticContent>
                <mimeMap fileExtension=".json" mimeType="application/json" />
            </staticContent>
            <rewrite>
                <rules>
                    <rule name="ABC" stopProcessing="true">
                        <match url=".*" />
                        <conditions logicalGrouping="MatchAll">
                            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="index.php" />
                    </rule>
                </rules>
            </rewrite>
            <handlers>
                <remove name="OPTIONSVerbHandler" />
                <remove name="PHP56_via_FastCGI" />
                <add name="PHP56_via_FastCGI" path="*.php" verb="GET, HEAD, POST, OPTION, DELETE, PUT, TRACE" modules="FastCgiModule" scriptProcessor="D:\Program Files (x86)\PHP\v5.6\php-cgi.exe" resourceType="Either" requireAccess="Script" />
            </handlers>
        </system.webServer>
    </configuration>
    
    
    

    有人能帮我怎么做吗?我需要在web.config文件中添加哪个块。我无法通过应用程序设置使用Azure Portal实现这一点,因为它只允许我为平台变量设置一个值。但是我想使用主机名来设置和访问它,我正在使用主机名来调用API。

    如果您不想在门户中设置变量,您可以参考以下文档:

    对于ASP.NET和ASP.NET核心开发人员,在应用程序服务中设置应用程序设置就像在Web.config或appsettings.json中设置它们一样

    注意:应用程序服务中的值覆盖Web.config或appsettings.json中的值。对于其他语言,文档还提供链接

    下面是我的测试。尝试使用
    System.Configuration.ConfigurationManager.AppSettings[“testkey”]
    获取值


    希望这能对你有所帮助。根据您的描述,您将两个环境站点部署到一个应用程序服务中,一个是stage,另一个是prev。因此,如果您使用的是标准、高级或独立应用程序服务计划层,为什么不试试呢。

    谢谢您的回复。是的,我试着为两个独立的产品使用相同的代码,基于平台变量值具有不同的功能。AppSetting将用于整个web应用。它不能基于主机名使用。所以我使用了你建议的其他方法。我创建了暂存槽。@克鲁,如果这对你有帮助,请接受它作为答案。