部署階段/生產 appsettings Asp.net Core
不,該指南似乎很清楚(至少對我而言)如何實施生產設置。他們只是談論其中一些是如何工作的,但沒有分步指南。我做了以下事情:
嘗試使用本指南更改項目中的環境變數
儘管 Microsoft Doc 明確聲明要重用
ASPNETCORE_ENVIRONMENT. 我無法保存這些設置忽略這個問題,看起來您可以手動創建這些條目,
launchSettings.json所以我有:{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:18549/", "sslPort": 44319 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "api/v10Staff", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_ENVIRONMENT_T": "Test" } }, "IIS Express (Stage)": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "api/v10Staff", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Stage" } }, "ApplicationName": { "commandName": "Project", "launchBrowser": true, "launchUrl": "http://localhost:60000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_ENVIRONMENT_T": "Test" } } }向伺服器添加環境變數
我已經根據我去的文件添加了環境變數
Control Panel > System > Advanced system settings.並添加了`新使用者變數。值為“階段”的“ASPNETCORE_ENVIRONMENT”使用本指南的配置片
我遇到的下一個問題是,沒有人顯示
appsettings.Stage.json. 它只是完全使用 Stage 文件而不是 appsettings 文件嗎?我是否需要明確說明有什麼不同?這裡說的是我的文件。appsettings.Stage.json
{ "WebServiceAccount": { "AccountName": "WebUser", "AccountPass": "Wedontcarethatthisishere" }, "ServerLocation": { "ServerName": "http://appss.domain.com:8080", "DBConnection": "server=svAppNameSTG;Max Pool Size=6000;database=ES;Integrated Security=SSPI;MultipleActiveResultSets=True" } }應用設置.json
{ "WebServiceAccount": { "AccountName": "WebUser", "AccountPass": "testpass1" }, "ServerLocation": { "ServerName": "http://appst.domain.com:8080", "DBConnection": "server=svAppNameTST;Max Pool Size=6000;database=ES;Integrated Security=SSPI;MultipleActiveResultSets=True" } }我知道設置和配置部分設置正確。因為我們的測試環境有效。當我將它部署到我們的 Stage 伺服器時,我已經確認它仍然指向測試框。
如果有人有指南或可以發現這有什麼問題,那就太好了。
為了後代
這是啟動建構器
var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build();
首先,您似乎
ASPNETCORE_ENVIRONMENT在第一個螢幕截圖中多次嘗試使用該變數。您不應該添加新變數,而是更改變數的值以反映您要使用的環境。因此,要在本地測試 Stage,只需將變數的值從 修改為。ASPNETCORE_ENVIRONMENT``Development``Stage我沒有遇到
ASPNETCORE_ENVIRONMENT_T任何使用變數的情況。如果這是您自己添加的內容,我懷疑它源於對上述內容的誤解,並且可能有更好的方法來實現您想要的。必須強調的是,其中的所有內容都launchSettings.json適用於您的本地機器/開發環境。
ASPNETCORE_ENVIRONMENT根據您的託管方式,在舞台或生產伺服器上設置變數會有所不同。IIS?天藍色?AWS?碼頭工人?以下答案討論了為 IIS 設置環境變數:關於
appsettings.json,值被合併。首先從基礎文件中讀取所有內容,然後從基礎文件中讀取的所有內容都appsettings.{env.EnvironmentName}.json將附加或覆蓋基礎文件中的內容。在您給出的範例中,可以從 中省略WebServiceAccount / AccountNameappsettings.Stage.json變數,因為它與基中的值相同。
