Asp.net

部署階段/生產 appsettings Asp.net Core

  • October 18, 2017

不,該指南似乎很清楚(至少對我而言)如何實施生產設置。他們只是談論其中一些是如何工作的,但沒有分步指南。我做了以下事情:

嘗試使用本指南更改項目中的環境變數

儘管 Microsoft Doc 明確聲明要重用ASPNETCORE_ENVIRONMENT. 我無法保存這些設置

顯示一個! 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 設置環境變數:

發佈到 IIS,設置環境變數


關於appsettings.json,值被合併。首先從基礎文件中讀取所有內容,然後從基礎文件中讀取的所有內容都appsettings.{env.EnvironmentName}.json將附加或覆蓋基礎文件中的內容。在您給出的範例中,可以從 中省略WebServiceAccount / AccountNameappsettings.Stage.json變數,因為它與基中的值相同。

引用自:https://stackoverflow.com/questions/42254480