【问题标题】:Get Azure connection string in datalayer在数据层中获取 Azure 连接字符串
【发布时间】:2019-07-30 08:10:28
【问题描述】:

很久以前有人认为,在我们的 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# .net azure connection-string .net-4.6.2


    【解决方案1】:

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

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

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

    【讨论】:

    • 当我这样做时,web.config 将被我的 TFS Release 或 Build 创建的一个替换(无法确定是哪一个)。长话短说:connectionStrings 在发布后消失。如何预防?
    • 你是把空连接字符串加到config还是release config?
    • 我在api项目中添加了一个web.config,并在配置文件中添加了连接字符串。我提交了,TFS 做了一些构建和发布,通过 Kudu 我看到 connectionStrings-section 消失了。
    • 我不熟悉 TFS,我认为您应该修改您的问题。这似乎是一个与 TFS 相关的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2017-09-29
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多