代码之家  ›  专栏  ›  技术社区  ›  Patrick McDonald

在Windows XP 32位上为Windows Server 2003 64位开发

  •  0
  • Patrick McDonald  · 技术社区  · 15 年前

    我在WindowsXP专业版上开发了一个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应用程序。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Community CDub    8 年前

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

    注意,当涉及到Oracle时,我喜欢使用 Oracle Instant Client :

    • 您不必在目标机器上安装任何东西(包括dev-box!).
    • 您可以确保您的应用程序将与您选择的特定客户端(版本,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 . 下面是关于 how to configure a WiX package for Oracle Instant Client 针对x86或x64计算机。如果您使用另一种部署策略,只需确保根据目标平台发送正确的客户机即可。

        2
  •  2
  •   Michael Stum    15 年前

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

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