【问题标题】:svcutil does not generate soap clientsvcutil 不生成soap客户端
【发布时间】:2014-02-10 16:41:28
【问题描述】:

我想连接一个 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 有什么问题吗?

【问题讨论】:

标签: .net soap wsdl


【解决方案1】:

问题来自像这样的<wsdl:part>s:

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

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

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

解决办法是:

使用 Fiddler 创建将 parameters 更改为 parameters1 的代理。

快速而肮脏的代码:

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

}

【讨论】:

  • 在 2 天后指责 wsdl.exe 这有效!非常感谢!
  • 太棒了,终于也为我工作了!! .如果你不介意,你怎么能弄清楚这是问题所在?有什么工具吗?
  • @Chandan 它来自这篇博文:webservices20.blogspot.fr/2010/01/…
【解决方案2】:

添加到戴夫的答案: 如果您使用的是 Visual Studio,您还可以通过保存 wdsl 并在本地更改它来将参数名称更改为 parameters1。

用参数1替换所有参数

通过将路径添加到 myservice.wdsl 文件(如 c:\webserice\myservice.wdsl)来添加服务引用

您可以找到更多答案here

【讨论】:

    猜你喜欢
    • 2011-08-23
    • 2010-10-22
    • 2013-08-20
    • 2012-02-05
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多