3

ODP.NET在我的 asp.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但仍然面临同样的问题。我错过了什么吗?

4

3 回答 3

3

我遇到了同样的问题,经过反复试验,我发现问题出在 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.DataAccess.dll 是否存在于 bin 文件夹中,您都不会再次遇到此问题。

希望这可以帮助..

于 2014-09-01T15:32:43.230 回答
1

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

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

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

于 2013-07-18T10:50:34.610 回答
0

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

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

于 2013-05-28T21:06:42.630 回答