问题描述
我有一个项目要发布在IIS服务器上的两个不同地址上:https://domain/test1/
和https://domain/test2/
。根据我发布的地址,我想为我的项目使用不同的配置设置,为简化起见,我们假设该配置为条目email
。
因此,对于地址https://domain/test1/
,我要配置email: [email protected]
,对于https://domain/test2/
,要email: [email protected]
。
我尝试更改launchSettings.json
文件中的配置,但是我无法添加具有相同名称的条目,如果更改了条目的名称,那么它将不知道使用IISExpress来发布它。
"IIS Express": {
"commandName": "IISExpress","launchbrowser": true,"applicationUrl": "https://domain/test1","email": "[email protected]","environmentvariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},"IIS Express": {
"commandName": "IISExpress","applicationUrl": "https://domain/test2","email": "[email protected]","environmentvariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
如何基于ASP.NET Core 3.1中的当前URL地址进行单独的配置?
解决方法
据我所知,launchSettings.json文件仅在本地开发计算机上使用,并且未部署。它仅由Visual Studio使用。
因此,如果您在launchSettings.json中设置了电子邮件设置,它将不会部署到生产服务器,也将不会使用。
此外,正如Lex所说,没有满足您要求的功能。
我建议您考虑使用appsetting.json和Environment变量来满足您的要求。
您可以使用不同的环境创建多个appsetting.json。
发布后,您可以打开applicationHost.config
,指定站点位置并按如下所示设置其他环境变量。
注意:此解决方法仅适用于路径为IIS网站名称的其他IIS网站名称。
applicationHost.config
路径:C:\Windows\System32\inetsrv\config\
。
<location path="domainA">
<system.webServer>
<aspNetCore>
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
<location path="domainB">
<system.webServer>
<aspNetCore>
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>