当前位置:  开发笔记 > 编程语言 > 正文

单独的Web服务中的相同类型

如何解决《单独的Web服务中的相同类型》经验,为你挑选了1个好方法。

我和这个问题有类似的问题.我有多个Web服务,我正在使用WCF,它们都共享类型.服务本身是用Java编写的,我无法访问它们.共享类型具有相同的签名,但svcutil.exe在运行时会出现此错误:

Error: There was a validation error on a schema generated during export:
    Source:
    Line: 8 Column: 3
   Validation Error: The complexType 'http://MyServer.MyService:CommonType' has already been declared.

凭借CommonType其在这两个网络服务相同的签名被消耗.这就是我打电话的方式svcutil:

svcutil.exe /o:GeneratedServices.cs /n:*,MyNamespace.Generated http://MyServer.MyService1?WSDL http://MyServer.MyService2?WSDL

我知道wsdl.exe/mergeTypes标志,适用于这些服务,但我有一些选择svcutil.exe,我真的很想使用.我确实有人证明我有可能,但是后端也使用.NET和WCF,而且我使用的Java后端也没有成功.



1> Marc Gravell..:

首先 - 它们完全一样吗?特别是,SOAP名称空间必须匹配(除了其他所有内容).如果他们不这样做,那么它们是不同的(不兼容的)类型; 您将不得不使用2个不同的引用(在不同的C#名称空间中以避免冲突),并在两种类型之间移位数据.

如果类型相同的,它仍然无法正常工作,那么你也许可以使用/ R开关与SvcUtil工具从现有的装配消耗类型.尝试使用它一次以获取第一个类型(仅从1个URL) - 然后将该代码编译到程序集中.对第二个端点使用svcutil ,其中/ r标志标识您之前生成的程序集.

注意; 一个相关的主题是partial class为一个或多个类型编写一个- 例如,为类型本身提供转换方法/运算符.这可能会使事情变得更简单.例如,您可以在不同名称空间中的两个相似类型之间编写隐式(或显式)静态转换运算符.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有