Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java web服务的.NET客户端WCF代理类中的类定义重复_.net_Wcf_Web Services_Wsdl - Fatal编程技术网

Java web服务的.NET客户端WCF代理类中的类定义重复

Java web服务的.NET客户端WCF代理类中的类定义重复,.net,wcf,web-services,wsdl,.net,Wcf,Web Services,Wsdl,我正在为Java web服务开发.NET WCF客户端。我可以从JavaWeb服务WSDL成功地生成.NET代理类,并通过代理类调用该服务。一个问题是代理类中的类重复。假设我们有两个java web服务:java_a和java_b,它们都引用一个类common_类 现在,如果我在客户端为两个Java web服务生成两个.NET代理类,比如:proxy_a和proxy_b。现在在这两个代理类中都有一个称为common_类的类,一个是proxy_a.common_类,另一个是proxy_b.comm

我正在为Java web服务开发.NET WCF客户端。我可以从JavaWeb服务WSDL成功地生成.NET代理类,并通过代理类调用该服务。一个问题是代理类中的类重复。假设我们有两个java web服务:java_a和java_b,它们都引用一个类common_类

现在,如果我在客户端为两个Java web服务生成两个.NET代理类,比如:proxy_a和proxy_b。现在在这两个代理类中都有一个称为common_类的类,一个是proxy_a.common_类,另一个是proxy_b.common_类。我想为客户端的两个代理类编写一些helper类,但很难处理公共类。我必须编写许多重复代码来操作两个常见的类,这在我看来是不应该发生的。应该可以手动修改代理类以提取公共_类,但由于我必须经常更新代理类,因此手动操作将非常痛苦

所以我的问题是:在生成代理类时,如何避免此类类定义重复

致以最良好的祝愿,
-Bruce

您可以对一个类进行物理编辑,并将其添加到两个项目中,而不是作为项目的顺序文件,而是作为对文件的引用。不幸的是,您必须从该文件中删除名称空间声明,否则两个代理也不能一起工作。

您可以通过手动编辑.SvcMap文件来解决此问题

为第一个web服务代理创建代理类

然后转到解决方案资源管理器,确保选中“显示所有文件”选项

现在打开Reference.svcmap文件并搜索MetadataSources节点

例如:

<MetadataSources>
    <MetadataSource Address="http://www.example.com/proxy_a/mex"
     Protocol="mex" SourceId="1" />
</MetadataSources>
只需将第二个服务代理的URL添加到此节点。别忘了增加SourceId属性

<MetadataSources>
  <MetadataSource Address="http://www.example.com/proxy_a/mex"
   Protocol="mex" SourceId="1" />
  <MetadataSource Address="http://www.example.com/proxy_b/mex"
   Protocol="mex" SourceId="2" />
</MetadataSources>
右键单击服务引用并选择“更新服务引用”,以便重新生成客户端代码。现在,如果正确构建服务并在需要的地方指定名称空间的公司只会为它们共享的公共类创建一种类型

需要更多信息吗?大约一个月前,我写了一篇关于这个问题的文章:


希望有帮助。

谢谢Christophe,我会尝试你的解决方案,并让你知道它是否适合我。