部署使用Oracle.DataAccess的Web服务器导致各种汇编错误
我的开发机器是Vista x64。部署使用Oracle.DataAccess的Web服务器导致各种汇编错误
我正在使用WCF Web服务来构建与Oracle 10g数据库接口的Web服务。
当开发开始时,我无法使用VS2008的内置WCF测试工具[WCFTestClient],当您按F5 [Go]时,在32位Oracle.DataAccess.dll上启动,因为我得到System.BadImageFormatException Oracle对象。所以在我的开发环境中,我切换到了ODP.NET 64位版本的引用程序集,这很好。
我可以部署到我的本地IIS [7],但只有当我使用32位Oracle.DataAccess.dll。
我想部署到安装了.NET 3.5 SP1的Win2003 [IIS 6],并安装了Oracle 10g数据库。此服务器上的其他Web应用程序成功使用Oracle连接。
如果我从web.config文件中删除对Oracle.DataAccess的所有引用,并确保在我的bin /文件夹中没有Oracle.DataAccess.dll,我可以打开默认的服务元数据页面[s],但通过SOAP客户端调用服务会导致错误:
“无法加载文件或程序集'Oracle.DataAccess,Version = 10.2.0.100,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其某个依赖项。系统找不到指定的文件。“
但是,如果我把Oracle.DataAccess.dll的副本,我斌/文件夹中,我得到:
“无法加载文件或程序集Oracle.DataAccess'或它的一个依赖的设程序集的清单定义与程序集引用不匹配(来自HRESULT的异常:0x80131040)“
当试图在Web浏览器中加载.svc页面时。
如果我添加集的引用我的web.config,我得到一个配置错误:“无法加载文件或程序XXX”
我想我寻求帮助了解程序集缓存,有人谁有ODP.net的经验,谁可以帮助我导航这个诡territory的领土,并成功部署这项服务。
好吧我设法[部分]解决它,但我仍然需要知道为什么这导致了错误。
我在本地机器上安装了ODP.NET 32位,位于64位安装的单独文件夹中。我将VS项目中的程序集引用改为位于odp.net/bin/2.x/文件夹中的Oracle.DataAccess.dll。
现在,SOAP消息不再引发错误。
现在的问题是:为什么我的开发环境中的dll选择驱动必须在生产环境中使用的dll?我希望能够在64位上开发并部署到32位服务器,而无需在每次我想部署时更改我的引用。
我公司的运行在64位运行到同样的问题,我们必须解决使用32位DLL缺乏更好的解决方案。
从我们所知道的,Oracle的64位dll专为64位构建。与使用“Any”的dll构建不同,它不包含32位目标代码。这很好,除了32bit dll似乎无法加载的所有这个额外的问题,除非该项目专为32位构建。
我们已经尝试了64/32位dll和项目设置的几十次迭代,除了32位dll/32bit项目,我们已经完全无法获得任何工作。最后,我们不得不推进这个项目,并停止投入时间来进行无尽的斗争。
如果可能,我诚实的建议是评估其他数据库解决方案。我与甲骨文的经验已经非常痛苦。
否则,只需构建在32位。它不应该导致任何问题。
也请点击此处:http://*.com/a/10557694/114029 – 2013-08-20 18:33:57