【问题标题】:Is it possible to pass environment variables to an asp .net core application via IIS without saving them to the web.config?是否可以通过 IIS 将环境变量传递给 asp .net 核心应用程序而不将它们保存到 web.config?
【发布时间】: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?

【问题讨论】:

    标签: c# asp.net iis


    【解决方案1】:

    我相信您在 IIS 中更改的所有内容都会保存到 web.config。这样一来,作为开发人员,您实际上不必在应用程序部署到的每台服务器上设置相同的配置。不幸的是,这意味着不,没有办法按照你的要求去做。

    您需要发布到三个单独的文件夹,以便拥有三个 web.config 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 2019-05-24
      • 2022-11-20
      • 2020-03-05
      • 2021-02-09
      • 1970-01-01
      • 2017-01-10
      相关资源
      最近更新 更多