【发布时间】:2010-11-22 15:21:24
【问题描述】:
从 .NET 接口生成 wsdls 时,如何将 asp.net / asmx 配置为根本不使用soap编码?简而言之,一个.NET SOAP Web 服务正在生成一个包含soap 编码的wsdl。例如:
<s:schema targetNamespace="http://tempuri.org/AbstractTypes">
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
<s:complexType name="StringArray">
<s:complexContent mixed="false">
<s:restriction base="soapenc:Array">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string" />
</s:sequence>
</s:restriction>
</s:complexContent>
</s:complexType>
</s:schema>
这无法使用 CXF 中的 wsdl2java 进行解析,这是一个 JAX-WS 实现,由于 soapenc:Array 位。解决方法是将上面的xml更改为:
<s:schema targetNamespace="http://tempuri.org/AbstractTypes">
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
<s:complexType name="StringArray">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string" />
</s:sequence>
</s:complexType>
</s:schema>
【问题讨论】:
-
这是 .Net 未能生成正确的 WSDL 还是 wsdl2java 未能完全支持 WSDL?我不知道答案,但对我来说,理解这一点至关重要,以确保我正在解决问题而不是支持问题的错误结局。
-
我对你的问题投了反对票,因为我无意阅读你的博客文章只是为了帮助你解决这个问题。编辑您的问题,使其独立存在,我将删除反对票。我不介意你的博客文章的链接,但问一个依赖于该链接的问题是没有意义的。
-
它不依赖于博文——我把它放在那里供参考。问题是完整的,无论如何。我要问的是“从 .NET 接口生成 wsdls 时,如何配置 asp.net / asmx 以完全不使用肥皂编码?”为了不给别人留下回答问题取决于阅读外部链接的印象,我将其删除。
-
@Lazarus 提出了一个很好的观点,但是您无法更改 MS 的 WSDL 实现或 wsdl2java 对它的解释。
标签: .net wsdl asmx jax-ws wsdl2java