我在让ODP.NEt库与.NET DBProviderFactories一起工作时遇到了问题。我收到以下代码的错误信息:
_DBFactory = DbProviderFactories.GetFactory(providerName);创建system.data的配置节处理程序时出错:列'InvariantName‘被约束为唯一。值'Oracle.DataAccess.Client‘已存在。
使用此providerName: Oracle.DataAccess.Client
以及web.config中的以下条目:
<system.data>
<DbProviderFactories>
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>有人知道哪里出了问题吗?我不认为我在任何地方都设置了两次。
发布于 2010-03-16 18:37:35
如果您安装了ODP.net (例如使用oracle通用安装程序,而不是xcopy),您将在machine.config中找到相同的DbProviderFactories/add。
因此,将它添加到您的web.config中就是第二次添加它-所以,复制Oracle.DataAccess.Client!
发布于 2013-01-23 03:14:34
你能做下面的事情吗?(请注意“清除”)
<system.data>
<DbProviderFactories>
<clear />
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>发布于 2015-09-25 05:18:36
应该注意的是,根据您的情况,<clear />将清除您可能不想执行的所有DbProviderFactories。
您也可以在重新添加该类之前删除它,方法是添加以下行:
<remove invariant="Oracle.ManagedDataAccess.Client" />
下面是整个<system.data>的外观:
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>如果您的本地计算机和服务器环境没有匹配的配置文件,例如machine.config,这将非常有用。
你可以做的另一件事是假设你的machine.config中的设置可以工作,那么你可以把它从你的web.config中全部删除。但是,我会在您的开发机器和您的服务器上进行测试。在我的例子中,它在其中一个上工作,但在另一个上不起作用,因为machine.config文件不匹配。为了解决这个问题,我将这个相同的设置添加到服务器上不带<remove invariant="Oracle.ManagedDataAccess.Client" />的machine.config中,如下所示:
<system.data>
<DbProviderFactories>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>https://stackoverflow.com/questions/2069308
复制相似问题