這是我EnvironmentName在發布應用程式時設定變數的方式:
dotnet publish -c Release -r win-x64 /p:EnvironmentName=MyCustomValue
我從這個鏈接得到的:
如何設定 ASPNETCORE_ENVIRONMENT 以考慮發布 ASP.NET Core 應用程式
因此,我的應用程式將嘗試從以下位置查找設定值:
appsettings.MyCustomValue.json檔案,如果該檔案不存在,它將嘗試從appsettings.json.
無論如何,我想EnvironmentName在運行時更改變數的值。原因是我只想發布我的應用程式一次并將其分發到多個服務器。必須多次發布同一個應用程式,每次使用不同的EnvironmentName變數是沒有意義的。
這是我嘗試做的
WebApplicationBuilder builder = WebApplication.CreateBuilder();
builder.WebHost.UseEnvironment(System.IO.File.ReadAllText(/path/to/some/file...));
但這不起作用。
uj5u.com熱心網友回復:
您應該配置您的托管環境(Azure/AWS/Container Orchestrator/whatever)ASPNETCORE_ENVIRONMENT=YourCustomValue為應用程式設定環境變數。每個環境應提供不同的值。例如,在 AWS ECS 中,您會這樣做:
{
"family": "",
"containerDefinitions": [
{
"name": "app",
"image": "app:latest",
...
"environment": [
{
"name": "ASPNETCORE_ENVIRONMENT",
"value": "YourCustomValue"
}
],
...
}
],
...
}
在 docker-compose 中:
version: '3'
services:
app:
image: app:latest
environment:
- ASPNETCORE_ENVIRONMENT: 'YourCustomValue'
如果從 shell 腳本啟動它:
ASPNETCORE_ENVIRONMENT=YourCustomValue dotnet App.dll
uj5u.com熱心網友回復:
抱歉,我不知道我可以將配置添加到現有配置中。這就是我最終覆寫默認appsettings.MyApp.json組態檔的方法
var filePath = Path.Combine(AppContext.BaseDirectory, $"appsettings.{MyApp.InstanceId}.json");
if (File.Exists(filePath))
{
var newConfigBuilder = new ConfigurationBuilder().AddJsonFile(filePath, optional: true, reloadOnChange: true);
builder.Configuration.AddConfiguration(newConfigBuilder.Build());
}
現在,如果該檔案存在,我的應用程式將首先嘗試從該檔案中讀取值,如果它不存在,它將故障轉移到appsettings.MyApp.json,如果該檔案不存在,那么它將故障轉移到appsettings.json
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/414080.html
標籤:
上一篇:.NETCore后備日志記錄
