我应该在哪里存储ASP.NET Core应用程序生产环境的连接字符串?

Dan*_*iel 7 iis-7 production-environment asp.net-core

部署到IIS 7(而非Azure)中时,生产和暂存连接字符串应存储在ASP.NET Core应用程序中的什么位置?

我正在寻找推荐的方式/最佳做法,尤其是在安全方面。

Mar*_* M. 5

在 ASP.NET 5 中,可以指定多个配置源。由于对先前模型的这一受欢迎的更改,您可以将开发连接字符串存储在简单的 json 文件中,并将登台和生产连接字符串直接存储在各自服务器上的环境变量中。

如果您像这样配置您的应用程序:

var config = new Configuration()
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Run Code Online (Sandbox Code Playgroud)

并且 config.json 和环境变量中都有连接字符串,那么环境源将获胜。

因此,将开发连接字符串存储在 config.json 中(并在源代码管理中自由签入),将生产连接字符串存储在环境变量中。更多信息请点击这里这里

  • 好的,但是如果将连接字符串保留在生产环境中的环境变量中,则意味着我们将失去应用程序隔离。如果两个应用程序使用相同的环境变量(ConnectionString)怎么办?这意味着我们应该为变量名称提供某种命名空间。这看起来一点都不好......除此之外,这还意味着应用程序可以访问其他应用程序的连接字符串中的密码(安全?) (9认同)
  • 我最终通过从根目录一路移动到 config.{env}.json,添加在其间目录中找到的所有 config.{env}.json 来制定自己的解决方案。因此,我可以在目录中放置一个 config.{env}.json ,该目录在发布网站时不会被覆盖,并将连接字符串保留在其中(仍然缺少加密...)。我这样做是因为为每个网站创建用户在我看来开销太大,而 Secrets API 更适合用户环境。但我会接受你的解决方案,因为我想这是推荐的方法...... (3认同)
  • 啊,当然。IIS 支持应用程序池标识和用户配置文件加载。检查出。另请检查我提供的第二个链接和 Secrets API。这两个选项中的任何一个都应该可以解决您的问题。 (2认同)