Dotnet 核心忽略 ASPNETCORE_ENVIRONMENT 变量
Dotnet core ignores ASPNETCORE_ENVIRONMENT variable
我用 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.
我尝试打开一个不同的控制台,并将其设置为以管理员身份登录,但该应用始终 运行 处于开发模式。
我看到了这个 () 相关问题,但我没有使用 IIS
问题是你如何设置环境变量。在命令行上你不需要引号,所以你应该改为:
C:\> set ASPNETCORE_ENVIRONMENT=Production
C:\> echo %ASPNETCORE_ENVIRONMENT%
Production
我怀疑您遇到的问题是 ASPNETCORE_ENVIRONMENT
变量是在 C:\devel\apps\webapi\Properties\launchSettings.json
文件中定义的。
dotnet run
的工作方式是加载此文件并找到 commandName
为 project
的第一个配置文件,并将其用于 运行 应用程序。如果您没有对该文件进行任何更改,则很有可能该配置文件的 environmentVariables
部分包含设置为 Development
.
的 ASPNETCORE_ENVIRONMENT
变量
如果您想 运行 应用程序处于 Production
模式,您有 2 个选项:
- 更改现有的配置文件并将变量设置为
Production
,这意味着每次执行 dotnet run
时,它都会 运行 处于生产模式的应用程序;或者
- 添加新配置文件,其中
ASPNETCORE_ENVIRONMENT
变量设置为 Production
。然后你可以使用它,如果你执行 dotnet run --launch-profile <name-of-your-new-profile>
我用 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.
我尝试打开一个不同的控制台,并将其设置为以管理员身份登录,但该应用始终 运行 处于开发模式。
我看到了这个 (
问题是你如何设置环境变量。在命令行上你不需要引号,所以你应该改为:
C:\> set ASPNETCORE_ENVIRONMENT=Production
C:\> echo %ASPNETCORE_ENVIRONMENT%
Production
我怀疑您遇到的问题是 ASPNETCORE_ENVIRONMENT
变量是在 C:\devel\apps\webapi\Properties\launchSettings.json
文件中定义的。
dotnet run
的工作方式是加载此文件并找到 commandName
为 project
的第一个配置文件,并将其用于 运行 应用程序。如果您没有对该文件进行任何更改,则很有可能该配置文件的 environmentVariables
部分包含设置为 Development
.
ASPNETCORE_ENVIRONMENT
变量
如果您想 运行 应用程序处于 Production
模式,您有 2 个选项:
- 更改现有的配置文件并将变量设置为
Production
,这意味着每次执行dotnet run
时,它都会 运行 处于生产模式的应用程序;或者 - 添加新配置文件,其中
ASPNETCORE_ENVIRONMENT
变量设置为Production
。然后你可以使用它,如果你执行dotnet run --launch-profile <name-of-your-new-profile>