ORACLE和实体框架。错误:在配置中找不到指定的商店提供商或无效

时间:2011-09-29 11:46:39

标签: .net oracle entity-framework-4 odp.net

在我的项目中,我一起使用oracle和实体框架。我的机器我的开发者机器win7和我的服务器win2008r2我安装了oracle beta实体框架和.net 4.0框架。

但是我的项目在本地计算机上运行,​​并且在服务器上不起作用而产生错误:

the specified store provider cannot be found in the configuration or is not valid 
SystemArgumentException unable to find the requested .net Framework data provider ...

任何人都可以帮助我吗?

6 个答案:

答案 0 :(得分:11)

在“应用程序池和高级设置”中

查看“启用32位应用程序”并查看是否已启用。它没有在我的Windows 7 64bit上设置,我遇到了同样的问题。

我猜它也可以通过安装64位ODAC来解决,但还没有尝试过。

答案 1 :(得分:2)

简而言之:不要使用ODAC .net驱动程序,而是使用oracle客户端完整安装。 修改ODAC组件可能有点困难。所以安装最新版本的oracle客户端到所有机器一切都很好。

  • 旧答案 - 对于这两台机器,我为.net安装了第一个oracle数据提供程序,然后安装了oracle beta实体框架提供程序。所以对于这两台机器,我有多个oracle客户端实例。

在我的开发机器中,oracle beta实体框架被配置为默认客户端。 - 我不知道何时/如何改变/谁改变了 -

在服务器默认提供程序中仍然是旧的odp.net。

将服务器上的默认提供程序更改为oracle beta实体框架提供程序后,它已更改。

再次感谢。

答案 2 :(得分:2)

之前我遇到过这个问题。我按照这些说明然后解决了: 使用Windows 10 x64

1-安装Visual Studio 2015。

2-从http://www.oracle.com/partners/campaign/utilsoft-086879.html安装ODAC。

  1. 从中安装ODTforVS2015 http://www.oracle.com/technetwork/topics/dotnet/downloads/odacmsidownload-2745497.html

  2. 复制步骤#2中配置的tnsnames文件并将其粘贴到步骤#3的目标安装的网络文件夹中。

  3. 更改C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ Machine.config <system.Data>标记,如下所示:

    <system.data>
    <DbProviderFactories>
        <add name="ODP.NET, Unmanaged Driver"  invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    <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>
    
  4. 在web.config中为web应用添加此行,如果是控制台应用,则在App.config中添加。在<configurations> </configurations>标签下(不在内部)。

    <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>
    

答案 3 :(得分:0)

我们在Windows 2012服务器上安装我们的应用程序,我们遇到了同样的错误,我们尝试在32位模式下运行应用程序,但结果是相同的。 我们试图通过控制台应用程序获取安装在机器中的DbProviderFactories列表,并发现缺少ODP.net托管驱动程序。 当我们运行我们找到的批处理文件时,它终于起作用了

答案 4 :(得分:0)

如果您在2018年遇到此错误,并且像我一样使用IIS Express,则可能要检查.csproj设置,并确保它以x64位运行。 (右键单击Web应用程序的csproj,转到“网络”标签,在“服务器”部分下,将位数更改为x64。)

答案 5 :(得分:0)

安装 ManagedDataAcces 为我解决了问题。