我的开发机器是Vista x64。
我正在使用 WCF Web 服务来构建连接到 oracle 10g 数据库的 Web 服务。
开始开发时,我无法在 32 位 Oracle.DataAccess.dll 上使用 VS2008 的内置 WCF 测试工具 [WCFTestClient],该工具会在您按 F5 [Go] 时启动,因为我在 Oracle 对象上收到 System.BadImageFormatException。因此,在我的开发环境中,我为引用的程序集切换到了 ODP.NET 64 位版本,效果很好。
我可以部署到我的本地 IIS [7],但前提是我使用 32 位 Oracle.DataAccess.dll。
我正在尝试部署到安装了 .NET 3.5 sp1 和 Oracle 10g 数据库的 Win2003 [IIS 6]。此服务器上的其他 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 的副本放在我的 bin/ 文件夹中,我会得到:
“无法加载文件或程序集 'Oracle.DataAccess' 或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)”
尝试在 Web 浏览器中加载 .svc 页面时。
如果我将程序集引用添加到我的 web.config,我会收到配置错误:“无法加载文件或程序集 xxx”
我想我正在寻求了解程序集缓存的帮助,以及具有 ODP.net 经验的人,他们可以帮助我导航这个危险的领域并成功部署此服务。