代码之家  ›  专栏  ›  技术社区  ›  Viletung

ASP.NETIIS中的核心(ICollection/List/Array)应用设置.json-> web.config文件

  •  1
  • Viletung  · 技术社区  · 5 年前

    Options pattern 我用一个 ICollection<string> allowedHosts 财产。在 appsettings.json [ "google.nl", "bing.com" ] 当应用程序在开发模式下运行时,一切正常。

    但是,在生产中,我们使用IIS并通过使用IIS的配置编辑器来定义 environmentVariables ,并保存为 web.config 会有点像这样:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <aspNetCore>
                <environmentVariables>
                    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
                    <environmentVariable name="AllowedHosts" value="How to format?" />
                </environmentVariables>
            </aspNetCore>
        </system.webServer>
    </configuration>
    

    应用设置.json :

    {
      "allowedHosts": [ "google.com", "bing.com" ]
    }
    

    web.config文件 ["google.com"] , "google.com"

    编辑:我使用了一个错误的属性名,在本例中 AllowedHosts 有不同的用途,我应该更改属性名。

    0 回复  |  直到 5 年前
        1
  •  1
  •   itminus    5 年前

    这个 AllowedHosts 是一种特殊配置,它接受分号分隔的主机名列表,而不接受端口号。 有关详细信息,请参阅 Host filtering .

    如果需要允许多台主机,可以按如下方式配置:

    <aspNetCore processPath="dotnet" arguments=".\abc.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
        <environmentVariables>
            <environmentVariable name="AllowedHosts" value="google.com;bing.com" />
        </environmentVariables>
    </aspNetCore>
    

    如果您想从array获得 Web.Config 配置,您可以将密钥名称更改为:

    <key-name>:<index>
    

    例如:

    <environmentVariables>
        <environmentVariable name="AllowedHosts:0" value="google.com" />
        <environmentVariable name="AllowedHosts:1" value="bing.com" />
    </environmentVariables>
    

    把这个数组放进去ASP.NET核心:

    var allowed =  _config.GetSection("AllowedHosts").AsEnumerable();
    
    /* output :
    [  
       {  
          "key":"AllowedHosts",
          "value":"*"
       },
       {  
          "key":"AllowedHosts:1",
          "value":"bing.com"
       },
       {  
          "key":"AllowedHosts:0",
          "value":"google.com"
       }
    ]
    */