我有一个包含10个操作的自包含(第三方)WSDL文件。 (服务器不是.net) 所有操作都有自己的XML命名空间,用于操作,消息和所有底层类型。
不同操作中的某些底层类型具有相同的名称,有时相同的内容或相同的结构(并非总是),但它们实际上是不同的,因为它们在不同的xml / xsd命名空间中定义(因此它们是唯一的)。 / p>
当我将此WSDL导入到我的c#客户端项目中时,我可以在VS项目中为其指定一个唯一的命名空间,并生成代理/存根。 问题是不同的操作在底层类型具有相同(xml类型)名称的地方,然后它生成c#类名称,如:MyType1,MyType2 ...
此外,第三方服务器可以更新服务,因此更新了WSDL,并且基础类型再次生成.net类,如MyType1,MyType2 ......但这次,可能以前生成的MyType6生成为MyType7和这打破了客户/消费者代码。
解决这个问题有什么解决方案?
我们正在考虑自定义wscfblue代码,但这似乎是一项繁琐的工作,需要维护......
Environment:
-VS2013 Ultimate (Client)
-.net 4.5 (Client)
-Unknown technology (Server) -> generates WSDL and provides the endpoint.
答案 0 :(得分:0)
您可以使用svcutil.exe生成代理,并使用/ n提供从xml命名空间到CLR命名空间的映射。它还支持多个映射,这听起来像你需要的。
示例:use svcutil to map multiple namespaces for generating wcf service proxies