ASP.NET核心(最新) - appsettings.json ConnectionString不覆盖Azure

时间:2017-06-26 21:19:53

标签: asp.net-core connection-string azure-web-sites azure-configuration

我正在玩一个我发布的小型 ASP.NET Core 1.1 应用程序。现在我关注使用 appsettings * .json 和环境变量documentation。所以我有以下内容:

appsettings.json
appsettings.Development.json

每个 appsettings * .json 文件都有适当的"ConnectionStrings:"部分:

  "ConnectionStrings": {
    "IdeasDatabase": "Server=tcp:adb.database.windows.net,1433;Initial Catalog=db;Persist Security Info=False;User ID=a_user;Password=apwd;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
  }

所以,当我开始发布Azure时,我在发布设置中使用了一个默认连接字符串(我知道这是错的),现在这在我的应用程序的Azure远程设置中显示:

enter image description here

我在此屏幕上首次发布时填充了上述连接字符串(发布向导):

enter image description here

现在,我的制作应用似乎在上图中使用此设置,而不是从我的appsettings.json连接字符串部分中获取设置。

我的appsetting.json文件存在于Azure App Service上:

enter image description here

我知道我可以将发布向导中的数据库连接字符串覆盖到正确的字符串中,但Azure不应该首先从我​​的appsettings.json文件中获取连接字符串,这与它在Azure上存储它的位置不同

2 个答案:

答案 0 :(得分:3)

  

现在,这显示在我的应用的Azure远程设置中:

Azure远程设置存储为环境变量。它的优先级高于appsettings.json中的配置。如果要在Azure上运行时使用appsettings.json中配置的设置,可以从Azure门户或Visual Studio中删除Azure远程设置。之后,Azure Web App将使用appsettings.json中的设置。

enter image description here

答案 1 :(得分:2)

使用环境变量或其他安全机制。将生产连接字符串存储在文件中是不安全的。