wsdl.exe-当Use=Literal时,标头需要元素属性

本文关键字:属性 元素 exe- Use Literal wsdl | 更新日期: 2023-09-27 18:20:19

我正在使用MS wsdl.exe从wsdl文件生成C#文件,但收到一个错误描述,称"Use=Literal时标头需要元素属性"

我该怎么摆脱这个?有没有其他工具可以从wsdl生成C#?

    <message name="SomeHeader">
        <part name="Version" type="xsd:string"/>
    </message>

    <operation name="xxxxx">
        <soap:operation soapAction="xxxx"/>
        <input>
            <soap:header use="literal" message="SomeHeader" part="Version" />
            <soap:body use="literal" />
        </input>
        <output>
            <soap:body use="literal" />
        </output>
    </operation>

wsdl.exe-当Use=Literal时,标头需要元素属性

我通过将"type"替换为"element"最终解决了这个问题。

在wsdl以上修改为

<wsdl:types> 
    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
                targetNamespace="http://tempuri.org/"
                elementFormDefault="qualified">
        <xsd:element name="Version" type="xsd:string"/>
        ....
        ....
    </xsd:schema>
</wsdl:types>

<message name="SomeHeader">
    <part name="Version" element="tns:Version"/>
</message>