肥皂服务标头<s:必须理解in =“” c#=“”

时间:2018-07-02 11:46:22

标签: c# xml soap

=“”

我创建了Web服务来接受此肥皂请求。 我测试了并且没有标题就可以正常工作 如果我添加标题仍适用于s:mustUnderstand =“ 0”,但 如果我将其更改为1,则会破坏

  

动作s:mustUnderstand =“ 1”

为了接受标头,我需要在Web服务上进行哪些更改? 预先感谢

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">   <s:Header>
        <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.xxxx-ccc.co.uk/Integration/SaveApplication</Action> </s:Header>  

<s:Body>  applicant>
          <title>Mr</title>
          <forename>dd</forename>
          <surname>ee</surname>
          <address>
            <street1>ppp</street1>
            <town>dd</town>
            <county>cc</county>
            <postcode>rtrtr</postcode>
          </address>
        </applicant> 
</s:Body> </s:Envelope>

这是我的网络服务代码

 [WebService(Namespace = "http://www.xxxx-ccc.co.uk/Integration/")]
 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 [System.ComponentModel.ToolboxItem(false)]
    public class CG_ADNContact : System.Web.Services.WebService
    {

        [WebMethod(Description = "")]
        public XmlDocument SaveApplication()
        { //Do some thing }

}

1 个答案:

答案 0 :(得分:3)

http://schemas.microsoft.com/ws/2005/05/addressing/none命名空间对于Action元素无效。它永远不应出现在肥皂消息中。您从哪里得到消息?您是否可能从wcf跟踪日志中复制了它?

如果mustUnderstand属性设置为true(或1),则这基本上意味着所涉及的元素必须是服务合同的一部分。您可以使用MustUnderstand属性的MessageHeader属性来控制它。

有关使用此属性的示例服务合同,请参见here