.net - svcutil 不生成 soap 客户端

标签 .net soap wsdl

我有一个我想连接的 Web 服务,但我无法弄清楚 wsdl 出了什么问题。

wsdl 位于“http://marketplacebylaredoute.fr/spapi/SellerOrderService?wsdl”。然后我尝试运行 svcutil http://marketplacebylaredoute.fr/spapi/SellerOrderService?wsdl它失败了。 错误如下(仅提取)

Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.Se
rviceModel.Description.XmlSerializerMessageContractImporter
Error: These members may not be derived.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://Redcats/Order
/SellerOrder/2.0']/wsdl:portType[@name='portType']

知道这个 wsdl 有什么问题吗?

最佳答案

问题来自<wsdl:part>就像这个:

<wsdl:part element="ns5:UpdateSellerOrderRequest_2.0" name="parameters">

name="parameters" , svcutil.exe 认为服务是 doc/literal/wrapped。

如果您将其更改为 parameters 以外的其他内容, svcutil.exe 会将其解释为 doc/literal/bare。

解决方法是:

使用 Fiddler 创建一个代理来改变 parametersparameters1 .

快速而肮脏的代码:

static function OnBeforeResponse(oSession: Session) {
    if (m_Hide304s && oSession.responseCode == 304) {
        oSession["ui-hide"] = "true";
    }
    oSession.utilDecodeResponse();
    oSession.utilReplaceInResponse('parameters', 'parameters1');

}

关于.net - svcutil 不生成 soap 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682947/

相关文章:

c# - 数组和数据表之间的区别?

c# - Runtime.Caching.MemoryCache 在将许多项目添加到缓存时抛出 OutOfMemoryException

c# - 当线程被杀死时如何杀死播放循环?

java - Android:如何使用 KSOAP2 从 header 和正文获取数据

java - SOAP UI 中未弹出“请求”选项卡

java - 如何使用Android获取xml中的根元素?

java - 在gradle中或通过xjc下载复杂的架构/wsdl

java - CXF wsdl2java 导致 BINDING_MISSING_TYPE

javax.xml.ws.WebServiceException : Could not find service named

c# - Linq 的 IEnumerable.Select 是否返回对原始 IEnumerable 的引用?