Startup.cs returns 错误的环境
Startup.cs returns wrong environment
启动 class 包含
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
Console.WriteLine($"{env.EnvironmentName.ToString()}");
if (env.IsDevelopment())
{
// For more details on using the user secret store see
// https://go.microsoft.com/fwlink/?LinkID=532709
builder.AddUserSecrets();
}
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
但 env.EnvironmentName.ToString() returns "Production".
我已经在 launchSettings.json
中将 ASPNETCORE_ENVIRONMENT 设置为 "Development"
当您也在 web.config
中设置环境时,通常会发生这种情况。
例如,如果您在 launchSettings.json
-
中将环境设置为 Production
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
},
而在web.config
中,如果你有其他环境Staging
-
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" />
</environmentVariables>
</aspNetCore>
在这种情况下,当您尝试在 startup.cs
中阅读 env.EnvironmentName
时,您将得到 Staging
看看这是否有帮助。
使用 powershell 命令可以正常工作:
$Env:ASPNETCORE_ENVIRONMENT = "Development"
这可能对某些人有帮助。
我在本地 运行ning 反对发布的文件 - 那不是 运行 通过 visual studio F5。通过命令行设置环境变量将其添加到无效的用户环境变量中。
我必须做的就是将 ASPNETCORE_ENVIRONMENT 添加到系统环境变量中。然后,重新启动后,它起作用了。
获取环境变量:
右键单击 "This PC",然后单击属性。然后高级系统设置。然后最后点击按钮 "environment variables"。在接下来的弹出窗口中添加系统变量。
启动 class 包含
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
Console.WriteLine($"{env.EnvironmentName.ToString()}");
if (env.IsDevelopment())
{
// For more details on using the user secret store see
// https://go.microsoft.com/fwlink/?LinkID=532709
builder.AddUserSecrets();
}
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
但 env.EnvironmentName.ToString() returns "Production".
我已经在 launchSettings.json
中将 ASPNETCORE_ENVIRONMENT 设置为 "Development"当您也在 web.config
中设置环境时,通常会发生这种情况。
例如,如果您在 launchSettings.json
-
Production
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
}
},
而在web.config
中,如果你有其他环境Staging
-
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" />
</environmentVariables>
</aspNetCore>
在这种情况下,当您尝试在 startup.cs
env.EnvironmentName
时,您将得到 Staging
看看这是否有帮助。
使用 powershell 命令可以正常工作:
$Env:ASPNETCORE_ENVIRONMENT = "Development"
这可能对某些人有帮助。
我在本地 运行ning 反对发布的文件 - 那不是 运行 通过 visual studio F5。通过命令行设置环境变量将其添加到无效的用户环境变量中。
我必须做的就是将 ASPNETCORE_ENVIRONMENT 添加到系统环境变量中。然后,重新启动后,它起作用了。
获取环境变量: 右键单击 "This PC",然后单击属性。然后高级系统设置。然后最后点击按钮 "environment variables"。在接下来的弹出窗口中添加系统变量。