我有一个我想连接的 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 创建一个代理来改变 parameters
至 parameters1
.
快速而肮脏的代码:
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/