2017-07-25 86 views
12

我嘗試將我的appsettings.json文件中的DefaultConnection添加到Azure的應用程序設置,但Azure不會覆蓋連接字符串。Azure應用程序設置不覆蓋我的appsettings.json文件值

enter image description here

enter image description here

任何文章或博客我能找到狀態,所有我需要做的是在appsettings.json文件中添加連接字符串名稱,因爲它規定和天青應該做休息(例如https://tehremo.wordpress.com/2016/10/07/override-connection-strings-app-settings-in-asp-net-core-and-azure-app-service/)但是當應用程序發佈時,它使用我的本地連接字符串。

我Startup.cs文件如下所示:

enter image description here enter image description here

注:我使用了 「部署Azure的應用服務」 的發佈任務VSTS持續交付出版。

+0

你可以包含你的Startup.cs文件嗎? – rolspace

回答

17

我只是有一個類似的問題(這個問題是PostgreSQL的連接字符串類型,我不得不將其更改爲自定義),現在它爲我工作,所以這些都是件:

  1. 這是我的appsettings.json文件。我在我的appsettings.Development.json中設置了'Psql'的值,但在appsettings.json中它保留爲空。 enter image description here
  2. 這些是在Azure門戶中設置的設置。請注意,有兩種方法可以覆蓋連接字符串。 enter image description here
  3. 這是我的Startup.cs文件的一部分。請注意Startup構造函數中設置的應用順序以及我在ConfigureServices方法中獲取連接字符串的方式(GetConnectionString是標準擴展方法)。 enter image description here

從下面我的意見附加信息:

Azure的GUI(連接字符串,應用程序設置)使用環境變量在內部,所以appsettings.json將保持不變。

如果要覆蓋需要一個appsettings.json的價值在VSTS釋放活動(之前,將公佈天青),科林的ALM角建&發佈的工具可以使用。以下是Colin's ALM Corner Build & Release Toolstutorial的鏈接。

+0

嗨。我試過你沒有喜悅的建議。我已經添加了我的statrtup代碼到我的問題 – psycho

+0

嘿,你怎麼理解你連接字符串沒有改變,站點啓動時出錯?你有沒有嘗試使用應用程序設置,而不是連接字符串(我的第二張圖片上的「另一種方式」)?您也可以嘗試使用'DefaultConnection'中的其他名稱。順便說一句,你的appsettings.json被設置爲可選的,是有意完成的嗎? – pasul

+0

我知道它指的是錯誤的連接字符串becuasue我有日誌告訴我登錄時連接數據庫無效,而且當我去Kudu的appsettings.json時,我可以看到連接字符串不正確。我已將可選參數更改爲false,但仍然沒有快樂。 – psycho

1

謝謝@pasul,您的幫助非常感謝,並幫助我找到了替代解決方案。爲了使用VSTS任務進行部署並替換應用程序設置,您需要向釋放任務添加變量,並將有關json文件的任務傳遞給變量替換。

在「部署Azure應用服務」發佈任務中,您應該看到「文件轉換和變量替換」部分。在這裏你將提供你想交換變量值的json文件的路徑。

enter image description here

然後你需要點擊上發佈環境的選項按鈕。您會看到一個選項來在彈出菜單中配置變量。

enter image description here

從這裏你可以添加你想要修改爲變量的JSON屬性。在我的情況下,連接字符串。這將如下所示:

enter image description here

「ConnectionStrings.DefaultConnection」

然後,只需把你的連接字符串值。然後,VSTS將在部署時爲您替換這些值。