我有一个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;
});
为什么辅助环境。Is{EnvironmentName}() 检查在这里不起作用?