2012-09-27 46 views
0

我试图消费一个使用Visual Studio 2010客户端使用SOAP标准的PHP创建的Webservice属性???必须有目前的属性名称或ref,但不是两个“

当我尝试生成代理时, 。WSDL文件的格式的错误信息是此(翻译所以inacurate):

错误在名为“Inscritos”的complexType模式元素, 属性???必须具有本属性名称或ref,但不均为

Reviewi纳克的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由外部供应商托管,因此我们没有机会重新定义它。有没有人知道一种方法或解决方法来避免这个问题?

预先感谢任何帮助

回答

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[]"/> 
       ^
+0

感谢Erik,但是当我做出这个改变时,在这个WSDL行中引发了另一个错误:文档XML错误(126,20)名称空间'http://schemas.xmlsoap.org/soap/encoding/'的前缀不是定义 – Fernando

0

这是一个糟糕的模式,和我不知道什么是应该的意思,所以我不能提出一个修正。

您问如果您的项目依赖于来自外部供应商的不适合用途的服务,您可以做些什么。这是一个项目管理问题,而不是技术问题。

+0

我认为有一种技术方法来实现这种解决方法,但我没有创建它,所以这是将我带到这里寻求帮助的动机。也许一种方法可能是下载WSDL,并进行修改以使其与VS2010客户端代理生成器兼容。然后使用wsdl.exe命令行生成客户端代理。问题是我不知道我必须修改这个元素才能使它正常工作 – Fernando

相关问题