在.NET项目中管理具有共享类依赖性的2个Web引用

时间:2009-02-23 19:21:24

标签: .net web-services

我有一个包含2个asmx文件的Web服务项目。我们称之为internal.asmx& external.asmx实际上,它们有不同的客户:

外部客户端将调用externalWS.PersistOrder(订单订单),在内部,我们处理订单internalWS ProcessOrder(订单订单)。因此,Order类是跨这些Web服务的共享依赖。

我正在编写一个测试应用程序,在这两个Web服务上调用不同的web方法。

我遇到了问题,因为Web服务使用相同的classe。为了使用这两种web方法,我在我的测试项目中添加了2个webreferences。但是,依赖类有2个副本,具有不同的名称空间。作为一个短期修复,我正在编辑VS创建的类。

必须有更好的方法!在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我不确定如何(以及如果)修改VS Web引用向导的行为。

但是,您可以从命令行使用wsdl.exe或svcutil.exe(取决于您是否希望System.Web或WCF样式的客户端代理服务),并为共享类型指定适当的选项。

对于wsdl.exe,你想要的命令行选项是/sharetypes,虽然我多年没有触及它,所以我不记得具体的用法细节。

对于svcutil.exe,您需要的命令行选项是/ reference:。您可以在可以引用的程序集中拥有共享类。如果您可以获得的共享类的唯一定义是在两个服务的WSDL中,则可能需要使用svcutil.exe来生成客户端代理,将其修剪为仅包含共享类并从中构建引用程序集对于这两种服务的实际客户端代理。

此方法的缺点是,如果其中一个服务的WSDL发生更改,则需要再次运行该工具。这可以通过在项目中添加自定义任务来缓解,该项目始终针对两个服务运行该工具。

答案 1 :(得分:0)