点网核心会忽略ASPNETCORE_ENVIRONMENT变量

时间:2018-08-14 23:21:08

标签: .net-core environment-variables app-config environment production-environment

我创建了一个具有dotnet核心的简单webapi项目。

我正在尝试使用ASPNETCORE_ENVIRONMENT系统变量设置运行环境。

C:\devel\apps\webapi>set ASPNETCORE_ENVIRONMENT=Production

C:\devel\apps\webapi>echo %ASPNETCORE_ENVIRONMENT%
Production

C:\devel\apps\webapi>dotnet run
Using launch settings from C:\devel\apps\webapi\Properties\launchSettings.json...
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\SSCARANO\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
Hosting environment: Development
Content root path: C:\devel\apps\webapi
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

我尝试打开其他控制台,也将其设置为以管理员身份登录,但是该应用始终在开发模式下运行。

我看到了这个(https://stackoverflow.com/a/40102470/47633)相关问题,但我没有使用IIS

2 个答案:

答案 0 :(得分:2)

问题在于您如何设置环境变量。在命令行上,您不需要引号,因此您应该使用以下引号:

C:\> set ASPNETCORE_ENVIRONMENT=Production

C:\> echo %ASPNETCORE_ENVIRONMENT%
Production

答案 1 :(得分:2)

我怀疑您遇到的问题是ASPNETCORE_ENVIRONMENT文件中定义了C:\devel\apps\webapi\Properties\launchSettings.json变量。

dotnet run的工作方式是加载该文件并找到commandNameproject的第一个配置文件,然后使用它来运行应用程序。如果您尚未对该文件进行任何更改,则很有可能该配置文件的environmentVariables部分包含设置为ASPNETCORE_ENVIRONMENT的{​​{1}}变量。

如果要在Development模式下运行应用程序,则有两个选项:

  • 更改现有配置文件并将变量设置为Production,这意味着每次执行Production时,它将在生产模式下运行该应用程序;或
  • 添加一个新的配置文件,其中dotnet run变量设置为ASPNETCORE_ENVIRONMENT。如果执行Production
  • ,则可以使用它