在我创建的WSDL上运行wsdl.exe时,出现此错误:

错误:无法从命名空间'SomeNS'导入绑定'SomeBinding'。

  • 无法导入操作'someOperation'。
  • 这些成员可能不是派生的。

我正在使用文档 - 文字样式,据我所知,我遵守所有规则。

总结一下,我有一个有效的WSDL,但该工具不喜欢它。

我正在寻找的是,如果有人对wsdl.exe工具有很多经验,并且知道一些我不知道的秘密问题。

===============>>#1 票数:51 已采纳

我遇到了同样的错误消息。 挖了一会儿后,发现除了wsdl文件之外还可以提供xsd文件。 因此,除了wsdl命令末尾的.wsdl之外,还包括/导入.xsd文件,如下所示:

wsdl.exe myWebService.wsdl myXsd1.xsd myType1.xsd myXsd2.xsd ...

Wsdl给出了一些警告,但确实创建了一个ok服务界面。

===============>>#2 票数:8

有时你必须改变你的代码。 消息部分名称不应该相同;)

<wsdl:message name="AnfrageRisikoAnfrageL">
    <wsdl:part name="parameters" element="his1_0:typeIn"/>
</wsdl:message>
<wsdl:message name="AnfrageRisikoAntwortL">
    <wsdl:part name="parameters" element="his1_0:typeOut"/>
</wsdl:message>

对此:

<wsdl:message name="AnfrageRisikoAnfrageL">
    <wsdl:part name="in" element="his1_0:typeIn"/>
</wsdl:message>
<wsdl:message name="AnfrageRisikoAntwortL">
    <wsdl:part name="out" element="his1_0:typeOut"/>
</wsdl:message>

===============>>#3 票数:4

@thehhv解决方案是正确的。 有一些解决方法,不需要您手动添加xsd

转到你的服务,而不是去?wsdl转到?singleWsdl (截图如下)

在此输入图像描述

然后将页面保存为.wsdl文件(它将提供.svc以便更改它)

然后打开Visual studio command prompt你可以在(Win 7)开始 - >所有程序 - > Visual Studio 2013 - > Visual Studio工具 - > VS2013 x64 Native Tools命令提示符(可能是某些东西)中找到它
然后在Visual studio command prompt运行以下命令(而不是C:\\ WebPricingService.wsdl是保存wsdl的地方,除非我们认为非常相似并且选择相同的文件名和位置令人担忧)

wsdl.exe C:\WebPricingService.wsdl

它会给你一些警告,如@thehhv所说,但仍然在C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin\\amd64\\WebPricingService.cs生成客户端(或者将它放在你的机器上的任何地方 - 检查控制台输出,其中显示“写入文件”)

在此输入图像描述

希望这能为您节省一些时间。

===============>>#4 票数:3

在我的情况下,问题是不同的, 这里有很好的描述:

每当部件名称为“参数”时,使用.Net假定doc / lit / wrapped并相应地生成代理。 即使使用“参数”一词,wsdl也不是doc / lit / wrapped(如上例所示).Net可能会给我们一些错误。 哪个错误? 你猜对了:“这些成员可能不是派生的”。 现在我们可以理解错误的含义:.Net尝试省略根元素,因为它认为使用了doc / lit / wrapped。 但是这个元素不能被删除,因为它不是虚拟的 - 它应该由用户从一些派生类型中主动选择。

修复如下,并为我完美工作:

修复它的方法是在文本编辑器中打开wsdl并将部件名称从“parameters”更改为“parameters1” 现在.Net将知道生成doc / lit / bare代理。 这意味着新的包装类将作为代理中的根参数出现。 虽然这可能是一个更乏味的api,但这不会对有线格式产生任何影响,代理也可以完全互操作。

(我强调)

===============>>#5 票数:0

如果有人碰到这堵墙,这就是造成我案件错误的原因:

我有一个手术:

<wsdl:operation name="FormatReport">
  <wsdl:documentation>Runs a report, which is returned as the response</wsdl:documentation>
  <wsdl:input message="FormatReportRequest" />
  <wsdl:output message="FormatReportResponse" />
</wsdl:operation>

需要输入:

<wsdl:message name="FormatReportRequest">
  <wsdl:part name="parameters" element="reporting:FormatReportInput" />
</wsdl:message>

和另一个操作:

<wsdl:operation name="FormatReportAsync">
  <wsdl:documentation>Creates and submits an Async Report Job to be executed asynchronously by the Async Report Windows Service.</wsdl:documentation>
  <wsdl:input message="FormatReportAsyncRequest" />
  <wsdl:output message="FormatReportAsyncResponse" />
</wsdl:operation>

接受输入:

  <wsdl:message name="FormatReportAsyncRequest">
    <wsdl:part name="parameters" element="reporting:FormatReportInputAsync" />
  </wsdl:message>

输入元素是两种类型的实例:

<xsd:element name="FormatReportInput" type="reporting:FormatReportInputType"/>
<xsd:element name="FormatReportInputAsync" type="reporting:FormatReportAsyncInputType"/>

以下是catch - reporting:FormatReportAsyncInputType类型扩展(派生自) reporting:FormatReportInputType类型。 这似乎混淆了工具并导致“这些成员可能无法派生”。 错误。 您可以在接受的答案中解决以下建议。

===============>>#6 票数:0

如果您使用UPS Shipping wsdl执行此操作,并且您希望在为不同区域(debug,dev,prod)等构建时将dev交换为prod URL。您可以使用以下命令从中生成vb或C#文件Ship.wsdl然后覆盖此情况下Ship.vb文件中的值。

WSDL /Language:VB /out:"C:\wsdl\Ship.vb" "C:\wsdl\Ship.wsdl"  C:\wsdl\UPSSecurity.xsd  C:\wsdl\ShipWebServiceSchema.xsd  C:\wsdl\IFWS.xsd  C:\wsdl\common.xsd

  ask by Glenn Moss translate from so

未解决问题?本站智能推荐:

1回复

在哪里可以找到Visual Studio 2015的wsdl.exe?

我正在使用Microsoft Visual Studio Community 2015,并且想从WSDL生成代理类。 我已经发布了WSDL,然后将其保存在本地,然后使用实用程序wsdl.exe 。 在哪里可以找到Visual Studio 2015的wsdl.exe ? 我在一个地
1回复

导入的服务参考和生成的wsdl之间的区别

我使用wsdl导入了服务引用,该wsdl包含类和方法,其中一些将在我的Web服务中实现。 现在,发布我的WS并尝试获取wsdl时,我注意到导入的WSDL和生成的WSDL之间有很多区别(名称空间,集合中的“ ArrayOf”前缀,...)。 我只使用原始wsdl提供的类,所以我不明白为什么我的
1回复

WSDL在Visual Studio 2010中给出错误。数组语法不正确?

我已经接管了对Web应用程序的支持,其中包括SOAP Web服务。 soap服务器使用SoapServer(http://php.net/manual/en/soapserver.soapserver.php)在PHP中进行编码,并且可以与PHP作为soap客户端一起正常使用。 但是现在我正
4回复

C#中的SOAP客户端无法访问WSDL文件

我正在与第三方合作,将我们的一些系统与他们的系统集成在一起,它们为我们提供了一个SOAP接口,用于在其连接的系统中进行某些请求和更改。 对我来说问题是他们不提供WSDL文件供我使用。 如果我有一个WSDL文件,那么运行提供的.NET命令(wsdl.exe)并生成一个代理类来与服务进行交互就是
1回复

如何为特定WSDL生成WCF

我们必须调用特定的soap webservice并且无法生成所需的.NET代理类。 我们尝试使用svcutil.exe来完成它,并且只是在visual studio中添加服务引用,但是我们得到了相同的错误。 我们只是不知道这个wsdl有什么问题。 错误是: 自定义工具警告:无法导
3回复

来自.net的WSDL的SOAP请求

我想从SOAP UI获取WSDL中给定操作的示例SOAP请求。 我想避免使用svcutil生成一个程序集并反映它,但仍然可以接受。 但是,我不确定如何从方法信息生成SOAP Reqest。 有关这方面的任何信息都会有很大帮助。 我需要的故事...... 我正在研究一个Web
1回复

如何在wsdl端口wcf中将http更改为https

我正在wcf服务和ssl卸载环境上工作。 所以我必须通过自定义绑定设置http绑定... 请看下面的wsdl:port 现在我想用https更改位置
1回复

如何在运行时验证客户端WSDL是否与服务器WSDL相匹配?

我正在开发一个系统,其中.NET(紧凑框架)客户端通过SOAP与Java(AXIS2)服务器进行通信。 随着接口的不断发展,我正在寻找一种在运行时检查客户端接口是否与服务器的当前接口版本完全匹配的方法。 在不使用手工编码版本号的情况下,在两端匹配接口签名的最简单方法是什么?
1回复

.NET中的动态WSDL位置

我正在构建一个C#应用程序,它正在使用由我们网络上的服务器托管的WSDL。 当我使用Visual Studio的“添加Web引用”功能时,它工作得很好,保存了机器的IP地址等,并且SOAP调用没有任何问题。 我们现在将整个应用程序设为便携式,以便可以在任何环境中安装。 我们想将所有设置
1回复

SOAP和WSDL之间的区别

我正在通过Web服务概念。一般来说,互联网基于HTTP作为应用程序协议,TCP作为传输协议。那么SOAP在哪里适合。 Web服务是一种使用XML格式完成的可互操作机制。 如果WSDL根据XML描述Web服务数据,我们需要基于XML的SOAP协议。 我们所能做的就是通过HTTP发送WSDL语