我一直在Windows XP Professional上开发ASP.NET应用程序。在推广到制作时,我现在才发现服务器是64位。我在服务器上安装了Oracle Client 32位,无法连接到Oracle。
我正在使用Microsoft Provider for Oracle,我的问题是,如何在32位计算机上编译ASP.NET应用程序以连接到Windows Server 2003 64位计算机上的Oracle?
编辑:
在回答对我原始问题的评论时,我得到的错误是“尝试加载Oracle客户端库引发BadImageFormatException。在安装了32位Oracle客户端组件的64位模式下运行时会出现此问题”
我已经卸载了32位客户端并且安装了64位客户端,问题是服务器是DMZ中的生产服务器而我自己无法访问服务器,因此我试图预测任何问题我将在安装64位客户端时尝试访问服务器上的ASP.NET应用程序
答案 0 :(得分:2)
尝试的另一件事是将托管应用程序的应用程序池设置为32位模式。 http://extended64.com/blogs/rhoffman/archive/2005/05/10/482.aspx
这应该允许加载32位驱动程序。
答案 1 :(得分:2)
直截了当的解决方案:您应该根据平台(x64机器上的x64)安装Oracle客户端。原因是您的.NET应用程序很可能是在AnyCPU配置中构建的,这意味着它将在x64平台上作为x64应用程序运行。然后它只能加载x64本机库...
请注意,对于Oracle,我喜欢使用Oracle Instant Client:
查看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指南。如果您使用其他部署策略,请确保根据目标平台发送正确的客户端。