【问题标题】:Developing for Windows Server 2003 64 bit on Windows XP 32 bit在 Windows XP 32 位上开发 Windows Server 2003 64 位
【发布时间】:2009-09-08 15:34:00
【问题描述】:

我一直在 Windows XP Professional 上开发 ASP.NET 应用程序。在推广到生产环境时,我现在才发现服务器是 64 位的。我在服务器上安装了 32 位的 Oracle 客户端,无法连接到 Oracle。

我正在使用 Microsoft Provider for Oracle,我的问题是,如何让 32 位机器上编译的 ASP.NET 应用程序连接到 Windows Server 2003 64 位机器上的 Oracle?

编辑:

在回复对我最初问题的评论时,我得到的错误是“尝试加载 Oracle 客户端库引发 BadImageFormatException。在安装了 32 位 Oracle 客户端组件的 64 位模式下运行时会出现此问题”

我已经卸载了 32 位客户端并正在安装 64 位客户端,问题是服务器是 DMZ 中的生产服务器,我自己无法访问服务器,所以我试图预测任何问题我将在安装 64 位客户端并尝试访问服务器上的 ASP.NET 应用程序时拥有

【问题讨论】:

  • Oracle 连接是否有 64 位驱动程序?
  • “无法连接到Oracle”是什么意思?您收到错误消息?它超时了吗?什么?您是否尝试使用 SQLPlus 或 Oracle 客户端提供的其他工具进行连接?

标签: asp.net oracle .net-2.0 64-bit


【解决方案1】:

直截了当的解决方案:您应该根据平台安装 Oracle 客户端(x64 在 x64 机器上)。原因是您的 .NET 应用程序很可能是在 AnyCPU 配置中构建的,这意味着它将作为 x64 应用程序在 x64 平台上运行。然后它只能加载 x64 本机库...

请注意,说到 Oracle,我喜欢使用 Oracle Instant Client

  • 您不必在目标机器上安装任何东西(包括开发盒!)。
  • 您可以确保您的应用程序将使用您选择的特定客户端(版本,x86/x64)运行。
  • 您甚至可以轻松地让多个应用程序在同一台计算机上使用不同的客户端版本。
  • 不利的一面是,它会显着增加您的应用程序的重量(至少约 19Mb)。

查看What is the minimum client footprint required to connect C# to an Oracle database?了解更多信息。

在您的特定情况下,我建议设置一个可在 x86 和 x64 机器上运行的 Visual Studio 项目:查看我的博客文章 Oracle Instant Client in Visual Studio。然后这里是针对 x86 或 x64 机器的how to configure a WiX package for Oracle Instant Client 的指导。如果您使用其他部署策略,只需确保根据目标平台发布正确的客户端即可。

【讨论】:

    【解决方案2】:

    要尝试的另一件事是将托管应用程序的应用程序池设置为 32 位模式。 http://extended64.com/blogs/rhoffman/archive/2005/05/10/482.aspx

    这应该允许加载 32 位驱动程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 2013-09-19
      • 1970-01-01
      • 2014-12-15
      • 2014-10-14
      • 1970-01-01
      相关资源
      最近更新 更多