使用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>
我的问题是:如何从appsettings.json
转换此JSON:
{
"allowedHosts": [ "google.com", "bing.com" ]
}
使用web.config
文件的XML?我尝试使用["google.com"]
,"google.com"
,但没有一个起作用。
编辑:我使用了错误的属性名称,在这种情况下,AllowedHosts
的用法有所不同,我应该更改属性名称。
答案 0 :(得分:0)
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>
如果您想从Web.Config
配置中获取数组,则可以将键名更改为:
<key-name>:<index>
例如:
<environmentVariables>
<environmentVariable name="AllowedHosts:0" value="google.com" />
<environmentVariable name="AllowedHosts:1" value="bing.com" />
</environmentVariables>
要在ASP.NET Core中获取数组:
var allowed = _config.GetSection("AllowedHosts").AsEnumerable();
/* output :
[
{
"key":"AllowedHosts",
"value":"*"
},
{
"key":"AllowedHosts:1",
"value":"bing.com"
},
{
"key":"AllowedHosts:0",
"value":"google.com"
}
]
*/
答案 1 :(得分:0)
您是否不会在Startup类中进行设置? https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2