我有一個(gè)ASP.NET Core Api使用 appsettings.{environmentname}.json 配置文件的地方。然后我還擁有具有不同環(huán)境選項(xiàng)的相應(yīng) launchSettings.json 文件,以便我可以使用任何特定的環(huán)境設(shè)置文件運(yùn)行。在 Startup.cs 中,我們有一個(gè)條件設(shè)置,如果我們處于非生產(chǎn)環(huán)境中,那么我們使用一組特定的Jwt authentication(只是關(guān)閉了一些驗(yàn)證檢查),然后在生產(chǎn)中,我們加載了一個(gè)不同的版本要打開的所有檢查。在我的本地主機(jī)上,這在 environment.IsDevelopment() 返回 true 而 environment.IsProduction() 返回 false 的情況下效果很好。偉大的!但是,當(dāng)我通過我們的構(gòu)建過程運(yùn)行它并部署到我們的測試環(huán)境時(shí),environment.IsDevelopment() 現(xiàn)在返回 false。我在 Program.cs 文件中添加了添加 ConfigurationBuilder 的選項(xiàng),以便我可以將變量傳遞給我的構(gòu)建過程,如下所示:dotnet restoredotnet build --environment "Development"dotnet publish -o ..\Artifacts我將發(fā)布相關(guān)文件和相關(guān)代碼以獲取更多信息...程序.cspublic 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}() 檢查在這里不起作用?
1 回答

交互式愛情
TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
環(huán)境名稱是運(yùn)行時(shí)概念,而不是編譯(或構(gòu)建)時(shí)概念。這意味著在構(gòu)建(或發(fā)布)應(yīng)用程序時(shí),環(huán)境尚不可知,并且設(shè)置無效。發(fā)布應(yīng)用程序時(shí),您的代碼未運(yùn)行。
您可以在運(yùn)行應(yīng)用程序時(shí)控制環(huán)境名稱,例如通過以下參數(shù)dotnet run
:
dotnet run --environment=Production
或者使用已知的環(huán)境變量ASPNETCORE_ENVIRONMENT
。例如,通過在命令行執(zhí)行此操作:
set ASPNETCORE_ENVIRONMENT=Production
launchSettings.json
出于調(diào)試目的,也可以使用該文件設(shè)置此變量。此文件是在使用 Visual Studio 或dotnet new
.
應(yīng)用程序的默認(rèn)環(huán)境是生產(chǎn)環(huán)境。有關(guān)此主題的更多信息,請參閱文檔。
- 1 回答
- 0 關(guān)注
- 582 瀏覽
添加回答
舉報(bào)
0/150
提交
取消