生成的WSDL代理具有名为“System”的类

时间:2015-04-28 15:02:02

标签: c# .net soap visual-studio-2013 wsdl

我正在使用第三方服务,其WSDL定义了一个名为System的类。使用“添加服务引用”,Visual Studio将生成一个具有名为System的类的代理,该类会导致各种编译问题。

我正在寻找避免这个问题的最佳方法,而不违反合同。

我尝试修改Reference.cs,但是我做了什么搞砸了序列化。此外,由于每次有人更新服务引用时此文件都会更改,因此这不是一个好的长期解决方案。

我很好奇是否有人之前遇到过这样的问题,以及如何最好地解决它。

complexType如下:

<xsd:complexType name="System">
  <xsd:all>
    <xsd:element name="timer_frequency" type="xsd:string"/>
    <xsd:element name="acceptable_timer" type="xsd:string"/>
    <xsd:element name="fail_instructions" type="xsd:string"/>
    <xsd:element name="dispatch_instructions" type="xsd:string"/>
    <xsd:element name="system_descr" type="xsd:string"/>
  </xsd:all>
</xsd:complexType>

2 个答案:

答案 0 :(得分:2)

此问题的最终解决方案涉及生成服务引用(我选择通过svcutil.exe执行此操作),然后手动修改System类以调用其他内容(我选择{{1 }})。我还必须更改Sys以包含SoapTypeAttribute

然后,每当他们更新他们的API时,我都必须重新做一遍。不是很好,但让事情有效。

答案 1 :(得分:1)

您应该将服务命名空间更改为&#34; System&#34;。

之外的其他内容,而不是解决您的问题。

添加服务引用时,您可以选择提供所需的命名空间,但是使用系统会自动添加到Top上,这会搞砸。如果服务无法修改,我猜你应该避免添加引用并手动生成代理,修改它并添加到你的项目中。