Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该将ASP.NET核心应用程序的生产环境的连接字符串存储在哪里?_C#_Asp.net Core_Iis 7_Production Environment - Fatal编程技术网

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

C# 我应该将ASP.NET核心应用程序的生产环境的连接字符串存储在哪里?,c#,asp.net-core,iis-7,production-environment,C#,Asp.net Core,Iis 7,Production Environment,在部署到IIS 7(而不是Azure)中时,生产和暂存连接字符串应存储在ASP.NET核心应用程序中的何处 我正在寻找推荐的方法/最佳实践,尤其是在安全方面。在ASP.NET 5中,可以指定多个配置源。由于对先前模型的这一受欢迎的更改,您可以将您的开发连接字符串存储在简单的json文件中,并将您的暂存和生产连接字符串直接存储在相应的服务器上的环境变量中 如果您这样配置应用程序: var config=new Configuration() .AddJsonFile(“config.json”)

在部署到IIS 7(而不是Azure)中时,生产和暂存连接字符串应存储在ASP.NET核心应用程序中的何处


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

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

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

var config=new Configuration()
.AddJsonFile(“config.json”)
.AddenEnvironmentVariables();
config.json和环境变量中都有连接字符串,那么环境源将获胜


所以,将开发连接字符串存储在config.json中(并在源代码管理中自由签入),将生产连接字符串存储在环境变量中。更多信息和。

您希望在开发中使用用户机密API。请参见下面的示例(基于ASP.NET 5 Beta 5):

您还必须在project.json中设置userSecretsId(请参见下面的链接)。这是您的项目机密的唯一ID,在创建新机密时将需要此ID:

{
  "webroot": "wwwroot",
  "userSecretsId": "[Your User Secrets ID]",
  "version": "1.0.0-*"
  ...
}
要添加/删除/更新您的用户机密,您需要通过运行以下命令安装机密管理器:

dnu commands install SecretManager
然后使用“机密管理器”实际添加/删除/更新您的设置:

Usage: user-secret [options] [command]
Options:
  -?|-h|--help  Show help information
  -v|--verbose  Verbose output
Commands:
  set     Sets the user secret to the specified value
  help    Show help information
  remove  Removes the specified user secret
  list    Lists all the application secrets
  clear   Deletes all the application secrets
Use "user-secret help [command]" for more information about a command.
有关更多信息,请参阅和文档


我还应该注意到,在撰写本文时(ASP.NET 5 Beta 5),用户机密没有加密!这将在以后更改。

好,但如果将连接字符串保留在生产环境中的环境变量中,则意味着我们将失去应用程序隔离。如果两个应用程序使用相同的环境变量(ConnectionString),该怎么办?这意味着我们应该为变量名提供某种名称空间。看起来一点也不好。。。除此之外,它还意味着应用程序可以访问其他应用程序连接字符串中的密码(安全性?)啊,当然。IIS支持应用程序池标识和加载用户配置文件。看看这个。还要检查我提供的第二个链接和机密API。这两个选项中的任何一个都可以解决您的问题。我最终制定了自己的解决方案,从根目录一直到config.{env}.json,添加在两者之间的目录中找到的所有config.{env}.json。因此,我可以在发布网站时不会被覆盖的目录中有一个config.{env}.json,并将connectionstring保留在其中(仍然缺少加密…)。我这样做是因为在我看来,为每个网站创建一个用户的开销太大了,而Secrets API更适合用户环境。但我会接受你的解决方案,因为我想这是推荐的方法……你提到的文章警告说,用户机密只能用于开发!但OP的问题是关于生产的
Usage: user-secret [options] [command]
Options:
  -?|-h|--help  Show help information
  -v|--verbose  Verbose output
Commands:
  set     Sets the user secret to the specified value
  help    Show help information
  remove  Removes the specified user secret
  list    Lists all the application secrets
  clear   Deletes all the application secrets
Use "user-secret help [command]" for more information about a command.