【发布时间】:2019-04-30 19:41:41
【问题描述】:
我们正在创建一个 .NET Core 2.1 应用程序,其中包含一个连接到 SQL Server 数据库的 Web API 项目。
在将我的连接字符串存储在可能的最安全位置时,我正试图正确使用环境变量。
当我听说我可以使用环境变量来存储诸如连接字符串之类的东西时,听起来真的很棒。它是安全的,我们可以让变量因开发人员而异,在登台和生产环境中也有所不同。这很有用,因为它们的 SQL Server 实例的名称并不相同。
但是当我现在向我的 Windows 环境变量添加一个连接字符串时,如下所示:
或者像这样通过 PowerShell:
setx CUSTOMCONNSTR_MyContextDb "Server=.\\MYSQLSERVER;Database=MyDb_local;Trusted_Connection=True;ConnectRetryCount=0"
我试着像这样得到它:
var connectionString = Configuration.GetConnectionString("MyContextDb");
但这不起作用。字符串为空。
只有在我转到项目属性时将 CUSTOMCONNSTR_MyContextDb 变量和值添加到环境变量中,然后在“调试”选项卡上输入环境变量,我才能使这行代码工作。这基本上只是将它们设置在 launchSettings.json 文件中。这似乎几乎没有比 appsettings.json 更好的位置(或者是吗?)。
我是否误解了 .NET Core 中环境变量的使用?我可以不使用 windows 定义的环境变量吗?还是只能在我的 IIS 服务器上使用真实的 Windows 环境变量?
看起来可以,因为当我调试并查看配置对象时,我看到了一个包含 80 多个环境变量的列表。
作为参考,this post 和一个简短的 YouTube 剪辑帮助我更好地理解了这方面的概念,但我并没有完全掌握所有内容,希望你能提供帮助。
【问题讨论】:
-
Configuration这里应该是启动文件中IConfiguration的实例 -
当您对帖子投反对票时,请详细说明原因
-
@AdamVincent,是的,它是 IConfiguration 的实现
标签: c# asp.net-core environment-variables