无法在64位计算机中加载文件或程序集“Oracle.DataAccess”

时间:2012-03-21 04:56:06

标签: .net oracle iis-7 64-bit odp.net

我知道在同一问题上有很多问题。但我无法找到解决问题的方法。所以这是我的情况。

在我们的XBAP应用程序中,我们使用ODP.NET组件来访问oracle数据库。它在开发机器中完美运行。但是当我在生产中部署它时,我在运行应用程序时遇到以下异常。

类型:System.Exception,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089 消息:无法加载文件或程序集' Oracle.DataAccess,Version = 4.112.1.2,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其中一个依赖项。系统找不到指定的文件。

以下是系统/软件规格

开发机器

  • 32位使用XP专业人员
  • .NET 4.0
  • 32位ODP.NET 11.2.0.3.0

生产机器

  • 64位Windows Server 2008
  • .NET 4.0
  • 64位ODP.NET

我认为该应用程序正在尝试访问32位版本的Oracle.DataAccess' DLL,但在Visual Studio中,我已将目标平台设置为“任何CPU”。在生产IIS中,对于应用程序池,启用32位应用程序设置为“假”'。 GAC中也存在64位DLL。所以我认为应用程序必须使用64位版本的Oracle.DataAccess' dll但它没有。

2 个答案:

答案 0 :(得分:4)

安装32位版本的ODP.NET解决了这个问题!!

答案 1 :(得分:3)

当编译项目的when平台与iis中的当前平台设置冲突时,会出现此问题的一个条件。就像你说你在64位机器上运行一样,显然你的iis默认设置只允许64位应用程序。由于您的ODP /应用程序版本为32位,因此您需要覆盖默认设置iis以支持32位版本。按照以下步骤在iis上启用32位环境

•在运行提示

中运行“inetmgr”启动iis管理器

•展开localhost并选择

下的“应用程序池”

•选择应用程序池

下的“DefaultAppPool”

enter image description here

•单击操作选项卡

下的高级设置

•在高级设置中将“启用32位应用程序”设置为true

enter image description here

•单击“确定”并重新启动iis