我有一个ASP.NET Core Api使用 appsettings.{environmentname}.json 配置文件的地方。然后我还拥有具有不同环境选项的相应 launchSettings.json 文件,以便我可以使用任何特定的环境设置文件运行。
在 Startup.cs 中,我们有一个条件设置,如果我们处于非生产环境中,那么我们使用一组特定的Jwt authentication(只是关闭了一些验证检查),然后在生产中,我们加载了一个不同的版本要打开的所有检查。
在我的本地主机上,这在 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;
});
为什么 helper environment.Is{EnvironmentName}() 检查在这里不起作用?
交互式爱情
相关分类