【问题标题】:Changing wsdl:part name更改 wsdl:part 名称
【发布时间】:2018-01-04 16:19:40
【问题描述】:

有没有办法改变 WSDL 中消息部分的name?我的 WSDL 上有这个:

<wsdl:message name="getDataRequestMsg">
    <wsdl:part name="getData" element="tns:getData"/>
</wsdl:message>
<wsdl:message name="getDataRequestMsg_Headers">
    <wsdl:part name="Header" element="tns:Header"/>
</wsdl:message>
<wsdl:message name="getDataResponseMsg">
    <wsdl:part name="getDataResponse" element="tns:getDataResponse"/>
</wsdl:message>
<wsdl:message name="getDataResponseMsg_Headers">
    <wsdl:part name="Header" element="tns:Header"/>
</wsdl:message>

我正在使用MessageContractAttribute,实际上我可以使用MessageBodyMemberAttribute 上的相应name 属性更改名称,但它也会更改element 名称,这不是我想要的。我的 MessageContract 如下:

[System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
public partial class getDataRequestMsg
{
    [System.ServiceModel.MessageHeaderAttribute()]
    public Header[] Header;

    [System.ServiceModel.MessageBodyMemberAttribute()]
    public getData getData;

    public getDataRequestMsg()
    {
    }

    public getDataRequestMsg(Header[] Header, getData getData)
    {
        this.Header = Header;
        this.getData = getData;
    }
}

[System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
public partial class getDataResponseMsg
{
    [System.ServiceModel.MessageHeaderAttribute()]
    public Header[] Header;

    [System.ServiceModel.MessageBodyMemberAttribute()]
    public getDataResponse getDataResponse;

    public getDataResponseMsg()
    {
    }

    public getDataResponseMsg(Header[] Header, getDataResponse getDataResponse)
    {
        this.Header = Header;
        this.getDataResponse = getDataResponse;
    }
}

【问题讨论】:

    标签: c# .net web-services wcf wsdl


    【解决方案1】:
    [WebMethod()]
    [return: System.Xml.Serialization.XmlElement("your_element_name")]
    public your_type YourMethod()
    {
        // your code
    }
    

    【讨论】:

    • 欢迎来到 StackOverflow。一些解释将大大提高答案的质量,并帮助以后可能遇到类似问题的其他用户请花一些时间阅读帮助页面stackoverflow.com/help/how-to-answer
    • 即使答案结构不正确,它确实解决并解决了问题。关键是这一行:[return: System.Xml.Serialization.XmlElement("your_element_name")] 我正在尝试使用 System.Xml.Serialization.SoapElementAttribute 但没有运气。
    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2012-01-18
    • 2017-03-05
    • 2011-09-19
    • 2010-10-26
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多