在Asp.Net Core中从web.config读取环境变量

4

这是我的 web.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
      <environmentVariables>
        <environmentVariable name="TEST_WEBCONFIG_VARIABLE" value="some test webconfig variable value" />
      </environmentVariables>
    </aspNetCore>
  </system.webServer>
</configuration>

我该如何在Startup.cs中从我的web.config文件中读取TEST_WEBCONFIG_VARIABLE变量?

我尝试了Configuration["TEST_WEBCONFIG_VARIABLE"],但在配置值列表中找不到此变量。


1
你是在使用Visual Studio运行吗? - Sanket
1
@Sanket 是的,这有关系吗? - Yurii N.
1
Yuriy - 请检查我下面的答案。 - Sanket
2个回答

5
在使用Visual Studio运行时,可以像这样使用launchSettings.json文件-
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "TEST_WEBCONFIG_VARIABLE":"123"
      }
    },
    "SamplePractice": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "TEST_WEBCONFIG_VARIABLE":"123"
      }
    }
  }

由于launchSettings.json仅限于Visual Studio使用,在发布版本中需要使用web.config,如下所示-

<aspNetCore processPath="dotnet" arguments=".\MyAspNetCoreApplication.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" >
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="TEST_WEBCONFIG_VARIABLE" value="123" />
  </environmentVariables>
</aspNetCore>

这个环境变量的值将通过使用“-”跨应用程序进行读取。
Environment.GetEnvironmentVariable("TEST_WEBCONFIG_VARIABLE");

注意!这仅适用于发布的情况。


1
这就是问题所在 - Environment.GetEnvironmentVariable("TEST_WEBCONFIG_VARIABLE") 返回null。 - Yurii N.
1
你在使用 Visual Studio 运行时是否在 launchSettings.json 中添加了 TEST_WEBCONFIG_VARIABLE? - Sanket
1
不需要吗?我以为在web.config中的TEST_WEBCONFIG_VARIABLE就足够了。 - Yurii N.
1
在从Visual Studio运行时,环境变量从launchsetting.json中获取。在发布的情况下,它会从web.config中获取。 - Sanket
1
啊,这解释了一切,我会尝试发布它的! - Yurii N.
是的,在发布时从 web.config 中获取是正确的选择。 - Yurii N.

3

我相信你只需要调用以下代码:

获取单个设置: Environment.GetEnvironmentVariable("TEST_WEBCONFIG_VARIABLE"‌​);

获取所有设置的列表: Environment.GetEnvironmentVariables().GetEnumerator();

因为你正在从配置中访问EnvironmentVariables而不是AppSettings。


1
不,它不起作用,第一个变量返回null,第二个变量返回所有环境变量,但没有TEST_WEBCONFIG_VARIABLE。 - Yurii N.
1
嗯嗯嗯。让我快速查看一下我的项目。 - Jamadan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接