在我的项目中,我一起使用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 ...
任何人都可以帮助我吗?
答案 0 :(得分:11)
在“应用程序池和高级设置”中
查看“启用32位应用程序”并查看是否已启用。它没有在我的Windows 7 64bit上设置,我遇到了同样的问题。
我猜它也可以通过安装64位ODAC来解决,但还没有尝试过。
答案 1 :(得分:2)
简而言之:不要使用ODAC .net驱动程序,而是使用oracle客户端完整安装。 修改ODAC组件可能有点困难。所以安装最新版本的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。
从中安装ODTforVS2015 http://www.oracle.com/technetwork/topics/dotnet/downloads/odacmsidownload-2745497.html
复制步骤#2中配置的tnsnames文件并将其粘贴到步骤#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>
在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 为我解决了问题。