我正在使用第三方服务,其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>
答案 0 :(得分:2)
此问题的最终解决方案涉及生成服务引用(我选择通过svcutil.exe
执行此操作),然后手动修改System
类以调用其他内容(我选择{{1 }})。我还必须更改Sys
以包含SoapTypeAttribute
。
然后,每当他们更新他们的API时,我都必须重新做一遍。不是很好,但让事情有效。
答案 1 :(得分:1)
您应该将服务命名空间更改为&#34; System&#34;。
之外的其他内容,而不是解决您的问题。添加服务引用时,您可以选择提供所需的命名空间,但是使用系统会自动添加到Top上,这会搞砸。如果服务无法修改,我猜你应该避免添加引用并手动生成代理,修改它并添加到你的项目中。