无法加载文件或程序集’Oracle.DataAccess错误
我用C#构建ASP.NET应用程序,我想连接到oracle数据库。
我在我的64位Microsoft Window Server 2008计算机上的应用程序中添加了对Oracle.DataAccess
引用。 我还在我的机器上安装了ODAC(Oracle数据访问组件),并且此路径上也存在Oracle.DataAccess.dll
C:\ WINDOWS \ Microsoft.NET \assembly\ GAC_64 \ Oracle.DataAccess
但当我试图连接我遇到以下错误:
无法加载文件或程序集“Oracle.DataAccess,Version = 4.112.3.0,Culture = neutral,PublicKeyToken = 89b483f429c47342”或其依赖项之一。 该系统找不到指定的文件。
据我所知, Oracle.DataAccess
程序集只能使用32位,我也有64位的这种问题,它确实无法正常工作。 我的解决方案是从GAC中删除64位并在GAC上安装32位。 我还删除bin文件夹中的任何.dll文件到我的应用程序在GAC上找到程序集。
如果您的机器和操作系统是64位没有问题,32位版本将正常工作。
UPDATE
我建议你看看Official Oracle ODP.NET, Managed Driver
,这是一个比Oracle.DataAccess
更好的版本。 此Managed Driver
不需要计算机上的Oracle Client
,您只需要在connection string
的DataSource字段上提供TNS,它可以在32
位和64
位上正常工作。
您需要同时安装x64和x86版本的Oracle,因为某些东西(我认为它是Visual Studio)在调试时使用x86版本。
在VS2010中,我将平台目标更改为x64,此错误消息消失。
基本相同的错误
根据我和其他答案参与者的最新post缺少ODP.NET安装组件。
你查了一下GAC吗?
如果您没有看到Oracle.xxx文件夹,
你没有取得任何进展。
将Oracle.DataAccess.dll的正确版本和位放入application / BIN文件夹并进行本地引用。 它解决了许多问题。
要运行您的网站,您必须使用IIS,因为visual studio的开发服务器只能以32位模式运行。
在IIS应用程序池中,将应用程序设置为以64位运行。 (设置为高级设置)
要解决此错误,我在IIS中设置我的应用程序池以允许32位应用程序。 打开IIS管理器,右键单击应用程序池,然后选择“高级设置” – >将“启用32位应用程序”设置为True。 它对我来说很好。
- 在类库中实例化Castle Windsor容器时的最佳做法是什么?
- 可以调用Assembly.Load(byte )来引发AppDomain.AssemblyResolve事件吗?
- 通过提供类名作为字符串来获取引用程序集的类型?
- AssemblyTitle一旦设置就永远不会改变,我希望每个配置都改变它
- 如何访问另一个程序集中的类以进行unit testing?
- 检索JIT输出
- assembly绑定错误:绑定结果:hr = 0x80070002。 该系统找不到指定的文件
- AssemblyBinding BindingRedirect不适用于带有T4MVCExtensions的MVC4应用程序
- 关闭警告CS1607