0

我正在尝试使用带有 Visual Studio 2010 客户端的 SOAP 标准使用 PHP 创建的 Web 服务。

当我尝试生成代理时,会出现关于 WSDL 文件格式的错误。错误消息是这样的(翻译得很不准确):

名为“Inscritos”的 ComplexType 架构元素中的错误,属性 ??? 必须具有当前属性 name 或 ref,但不能同时具有

查看 WSDL 我发现了这个元素:

 <xsd:complexType name="Inscritos">
   <xsd:complexContent>
     <xsd:restriction base="SOAP-ENC:Array">
       <xsd:attribute res="http://schemas.xmlsoap.org/soap/encoding/:arrayType" wsdl:arrayType="tns:Inscritos2[]"/>
     </xsd:restriction>
   </xsd:complexContent>
 </xsd:complexType>

WS 由外部提供商托管,因此我们没有机会重新定义它。有人知道避免此问题的方法或解决方法吗?

提前感谢您的帮助

4

2 回答 2

0

这是一个糟糕的架构,我不知道它应该是什么意思,所以我不能建议更正。

如果您的项目依赖于不符合目的的外部供应商提供的服务,您会问该怎么办。这是一个项目管理问题,而不是技术问题。

于 2012-09-27T17:25:46.057 回答
0

我相当确定xsd:attribute标签应该有属性ref而不是res. 尝试改变

<xsd:attribute res="http://schemas.xmlsoap.org/soap/encoding/:arrayType" wsdl:arrayType="tns:Inscritos2[]"/>

<xsd:attribute ref="http://schemas.xmlsoap.org/soap/encoding/:arrayType" wsdl:arrayType="tns:Inscritos2[]"/>
                 ^
于 2012-09-27T15:03:01.317 回答