在C#程序开发过程中,自己的应用程序的App.config或Web.Config文件中与
系统的C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config文件以下内容重复:
会抛出异常如下:
Exception is: ConfigurationErrorsException - 创建 system.data 的配置节处理程序时出错: 列“InvariantName”被约束为是唯一的。值“Oracle.ManagedDataAccess.Client”已存在
如果两者都不配置,会抛出如下异常:
Exception is: ArgumentException - Can't load DbProviderFactory for given value of providerType
在实际当中,会碰到如下问题:
有时数据库安装出问题的话,系统的C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config文件中不会配置
有时数据库安装不出问题的话,系统的C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config文件中就会配置
由于以上问题的不确定性,我们在自己应用程序的app/web.config文件中配置这个节点就可能会因重复配置造成异常。
解决方法:
(1)在自己应用程序的app/web.config文件中添加这个节点:
<remove invariant="Oracle.ManagedDataAccess.Client"/>节点
即:
(2)将 系统的 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\ machine.config 文件中的注释掉