代码之家  ›  专栏  ›  技术社区  ›  brian chandley

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

  •  0
  • brian chandley  · 技术社区  · 15 年前

    我有一个web服务项目,它有两个asmx文件。让我们称之为internal.asmx&external.asmx在实践中,它们有不同的客户端:

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

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

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

    一定有更好的办法!提前感谢你的帮助。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Franci Penov    15 年前

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

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

    对于wsdl.exe,您需要的命令行选项是 /sharetypes ,虽然我已经好几年没碰过它了,所以我不记得确切的用法细节。

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