首页 > 解决方案 > 在数据层中获取 Azure 连接字符串

问题描述

很久以前,有人认为,在我们的 web api 的数据层中添加硬编码的连接字符串是个好主意。由于这个遗留问题,我无法删除这个类。此类继承 IDbContextFactory 并且它需要检索一个连接字符串,该字符串现在是硬编码的。为了使它更加...动态,我想为此使用 Azure 连接字符串。

1 我将连接字符串添加到应用服务的配置中

2 根据很多网站,我可以添加以下代码来检索连接字符串:

connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

这不起作用;它给出了“未设置对象实例的对象引用”。错误。

其他人说您需要添加前缀和环境:

connectionString = Environment.GetEnvironmentVariable("SQLCONNSTR_DefaultConnection");

显然,这也不起作用。是的,我在下拉列表中选择了 sql server。

正如有人建议的那样,我尝试的另一件事是将连接字符串添加到 web.config。然后再次; 这没有用。

很高兴知道这是 .NET 4.6.2,因此 .NET Core 1/2 的所有漂亮解决方案都不起作用。

标签: c#.netazureconnection-string.net-4.6.2

解决方案


首先,您必须在 web.config 中包含具有空 connectionString 值的相同连接字符串。然后您可以从应用程序设置部分覆盖。

`<connectionStrings>
    <add name="DefaultConnection" connectionString="" />
    <add name="CMSEntities" connectionString="" 
 providerName="System.Data.EntityClient" />
</connectionStrings>`

对于实体框架,将 providerName 指定为“System.Data.EntityClient”并设置选择自定义而不是 SqlServer


推荐阅读