【问题标题】:Could not load file or assembly 'Oracle.DataAccess' in 64 bit machine无法在 64 位机器中加载文件或程序集“Oracle.DataAccess”
【发布时间】:2012-03-21 04:56:06
【问题描述】:

我知道有很多关于同一问题的问题。但我找不到任何解决我的问题的方法。所以这是我的情况。

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

类型:System.Exception,mscorlib,版本=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”DL​​L,但在 Visual Studio 中,我已将目标平台设置为“任何 CPU”。在生产 IIS 中,对于应用程序池,启用 32 位应用程序设置为“false”。 GAC 中也存在 64 位 DLL。所以我认为应用程序必须使用 64 位版本的 'Oracle.DataAccess' dll,但事实并非如此。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      • 通过在运行提示符下运行“inetmgr”来启动 iis 管理器

      • 展开 localhost 并在其下选择“应用程序池”

      • 选择应用程序池下的“DefaultAppPool”

      • 点击操作选项卡下的高级设置

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

      • 单击确定并重新启动 iis

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-13
        • 2012-01-29
        • 2014-03-12
        • 2010-12-29
        • 2013-02-23
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        相关资源
        最近更新 更多