很久以前,有人认为在 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 的完美解决方案都不起作用。
最佳答案
首先,您必须在 web.config 中包含相同的连接字符串,且 connectionString 值为空。然后您可以从应用程序设置部分进行覆盖。
`<connectionStrings>
<add name="DefaultConnection" connectionString="" />
<add name="CMSEntities" connectionString=""
providerName="System.Data.EntityClient" />
</connectionStrings>`
对于 Entity Framework ,将providerName指定为“System.Data.EntityClient”,并且设置选择自定义而不是SqlServer
关于c# - 在数据层中获取Azure连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55060749/