【发布时间】:2018-11-22 02:34:38
【问题描述】:
我有一个 ASP.NET Core Api 我在其中使用 appsettings.{environmentname}.json 配置文件。然后我也有适当的 launchSettings.json 文件,其中包含不同的环境选项,因此我可以使用任何特定的环境设置文件运行。
在 Startup.cs 中,我们有一个条件设置,如果我们处于非生产环境中,那么我们使用一组特定的 Jwt authentication(只是关闭了一些验证检查),然后在prod,我们加载了一个不同的版本,该版本具有所有要打开的检查。
在我的本地主机上,这在 environment.IsDevelopment() 返回 true 而 environment.IsProduction() 返回 false 的情况下非常有效。太好了!
但是,当我在构建过程中运行它并部署到我们的测试环境时,environment.IsDevelopment() 现在返回 false。
我已经在 Program.cs 文件中添加了用于添加 ConfigurationBuilder 的选项,这样我就可以将变量传递给我的构建过程,如下所示:
dotnet restore
dotnet build --environment "Development"
dotnet publish -o ..\Artifacts
我将发布相关文件和相关代码以获取更多信息...
程序.cs
public static IWebHost BuildWebHost(string[] args)
{
var config = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
.UseStartup<Startup>()
.UseNLog()
.Build();
}
Startup.cs(ConfigureServices 方法)
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
{
// removed code not relevant...
// options.TokenValidationParameters = Environment.IsProduction()
// options.TokenValidationParameters = Environment.IsEnvironment("Prod")
options.TokenValidationParameters = Environment.IsDevelopment()
? devTokenValidationParameters
: prodTokenValidationParameters;
// options.TokenValidationParameters = devTokenValidationParameters;
});
为什么辅助 environment.Is{EnvironmentName}() 检查在这里不起作用?
【问题讨论】:
标签: c# asp.net-core build environment-variables