2011-09-29 38 views
3

在我的项目中,我一起使用了oracle和实体框架。我的两台机器中的开发人员机器win7和我的服务器win2008r2我安装了oracle beta实体框架和。网络4.0框架。ORACLE和实体框架。错误:在配置中找不到指定的存储提供程序或无效

但是我的项目工作的本地机器上,并在服务器上给错误不起作用:

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

任何人都可以帮我吗?

+0

听起来像这个问题? :http://stackoverflow.com/questions/2433749/deploying-applications-that-use-linq-to-entities –

回答

2

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

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

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

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

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

再次感谢。

11

在应用程序池和高级设置...

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

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

+0

这为我解决了它。就我而言,我使用的是32位的ODAC 12.1托管数据访问驱动程序,但Windows 7上的IIS默认情况下未配置为运行32位。 –

+0

这个答案让我朝着正确的方向去解决问题。 Mine需要修改64位4.0框架的Machine.Config文件。我试图通过.NET控制台应用程序访问Oracle数据库,但一直得到与OP相同的异常。在修改64位Machine.Config以包含Oracle数据库提供程序后,它工作正常。我基本上将32位Machine.Config for Oracle中的内容复制到64位Machine.Config。 – Jagd

+0

我认为最后一件事是我专门安装了64位版本的管理驱动程序。我想这只是一个64位安装程序。 –

0

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

2

我以前有这个问题。我跟着这些指示,然后它解决了: 与Windows 10的x64

1-安装Visual Studio 2015年

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

  • 从在步骤#2中配置 http://www.oracle.com/technetwork/topics/dotnet/downloads/odacmsidownload-2745497.html

  • 拷贝TNSNAMES文件女巫安装ODTforVS2015并将其粘贴到步骤3#目的地安装的网络文件夹中。

  • 更改C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ Machine。配置<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> 
    
  • 在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> 
    
  • +0

    严重的是,你很高尚......非常感谢。我在我的应用程序中添加了上述配置,它正在工作。 :) –

    相关问题