【发布时间】:2018-03-28 08:11:34
【问题描述】:
我正在寻找一种将数据作为环境变量传递给 asp.net 核心 Web 应用程序的方法。
您可以通过 IIS 执行此操作:
Management > Configuration Editor > environment variables > ...
但是,这只是将值写入项目的 web.config:
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\Foo.exe" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="Foo" value="Bar" />
<environmentVariable name="FooBar" value="1" />
</environmentVariables>
</aspNetCore>
</system.webServer>
这很可爱,但不幸的是也没什么用,因为如果我有三个网站,指向同一个已发布的文件夹,它们现在都共享相同的“环境”变量。
...
不是真正的环境变量。
更像是应用设置。
我查看了 IIS 中的“应用程序设置”,但由于 kestrel 在其自己的进程中运行,因此应用程序实例的代码不是托管代码并且也不起作用(请注意,使用“无托管代码”或“ ...应用程序池设置中的任何 CLR 版本都与 .net 核心应用程序无关)。
所以,如果您在 IIS 中为一个应用程序配置了多个站点,指向 同一个文件夹,有没有办法将 不同 配置传递给每个站点实例IIS?
【问题讨论】: