【问题标题】:MicrosoftConfigurationBuilders Connection String Provider Name Error (C#, Oracle)MicrosoftConfigurationBuilders 连接字符串提供程序名称错误(C#、Oracle)
【发布时间】:2020-12-24 16:28:48
【问题描述】:

Web.config 就是这样。

<configSections>
   <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/>
</configSections>



<connectionStrings configBuilders="Environment">
   <add name="ConnectionString" connectionString="ConnectionString" providerName="System.Data.OracleClient" />
   <add name="OracleDbContex" providerName="Oracle.ManagedDataAccess.Client" connectionString="OracleDbContex" />    
</connectionStrings>


<configBuilders>
    <builders>
        <add name="Environment" mode="Greedy" type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Environment" />
    </builders>
</configBuilders>

我有两个连接字符串,其中一个是普通的 Ado.net 连接。另一种是神谕实体。但问题是当程序启动和连接字符串从环境变量更改时,ado.net 连接正常工作,但 dbcontex 给出此错误。

System.InvalidOperationException: 'The connection string 'OracleDbContex' in the application's configuration file does not contain the required providerName attribute."'

如果我不使用 ConfigurationBuilders,两个连接工作正常。我需要从环境变量中获取连接字符串。我该怎么办?

【问题讨论】:

    标签: c# asp.net oracle


    【解决方案1】:

    我找到了解决方案。它关于建造者模式。我将贪婪改为严格并且它​​修复了。

    当使用严格模式时,首先查找配置值,然后使用覆盖值(如果存在)更新找到的每个条目。这意味着原始 conncetionString xml 节点保留了它的所有属性,包括 prividerName。

    【讨论】:

      猜你喜欢
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多