无法加载文件或程序集“Oracle.DataAccess”64位ODP.NET

时间:2013-04-24 08:04:53

标签: asp.net oracle odp.net

我在我的asp.net项目中使用ODP.NET,以便应用程序在Windows 2008服务器(32位)上与oracle 11 g Express对话。在开发机器上我有Windows 7(32位)。我在开发机器上安装了Windows 8(64位)并尝试从visual studio 2012运行该应用程序,它给出了错误“无法加载文件或程序集”Oracle.DataAccess''。经过一番搜索,我意识到我必须安装ODP.NET(64位)才能在64位机器上使用它,所以我卸载了32位版本并安装了64位ODP.NET。删除了对旧Oracle.DataAccess的引用,但仍面临同样的问题。我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

我有同样的问题,经过一些试验和错误,我发现问题是32位与64位平台。

  1. 当我们在64位环境中部署32位Oracle.DataAccess.dll以及Web应用程序并在服务器上安装ODP.net时,会发生此错误。
  2. 一种解决方案是从bin文件夹中删除Oracle.DataAccess.dll,并自动解析正确的引用。
  3. 第二个解决方案是为Oracle.DataAccess.dll设置引用属性CopyToLocal = false,因此在IIS上部署时不会使用构建,并且不会发生错误。
  4. 我更喜欢的第三个解决方案是为您的应用程序池启用32位应用程序,无论Oracle文件夹中是否存在Oracle.DataAccess.dll,您都不会再遇到此问题。
  5. 希望这会有所帮助..

答案 1 :(得分:1)

要安装ODP.NET,我使用64bit ODAC
安装后,要检查Oracle.DataAccess 64位程序集是否已正确安装,请转到文件夹:c:\Windows\Microsoft.NET\assembly\GAC_64并检查是否存在Oracle.DataAccess文件夹。
在该文件夹中应该有一个包含您正在使用的Oracle.DataAccess dll版本的子文件夹。

在Visual Studio中,您必须通过查看Assemblies-> Extensions(而不是使用Browse)来添加引用。 还要检查Visual Studio中的构建配置,以确保应用程序的活动解决方案平台为64位。

要运行您的网站,您必须使用IIS,因为visual studio的开发服务器仅以32位模式运行 在IIS应用程序池中,将应用程序设置为以64位运行。 (设置为高级设置)

答案 2 :(得分:0)

机器的位置无关紧要 - 托管应用程序的位置确实如此。 Visual Studio附带的开发Web服务器是32位,因此您需要安装32位版本的odp.net。如果要使用64位版本进行测试,可以在IIS中运行它。我安装两个。

在这种情况下,我猜这个问题更可能是版本号 - 您的应用程序最初引用的版本与您安装的版本不同。简单的做法是删除/重新添加对新安装的Oracle.DataAccess.dll的引用。但是,您必须这样做的事实表明您正在安装完整的客户端而不仅仅是ODP.net install。由于某种原因(除了oracle通用安装程序是一大块垃圾),完整的客户端不包括发布者策略(这将重定向引用),但odp.net安装确实如此。