KANAGAL RAJ
KANAGAL RAJ

Reputation: 33

How to add MessageID in the soap headers of WCF request and response?

The enterprise mobile device management protocol shows the below soap xml in HTTP POST Request. How can I define my web service to soap headers to include Action , MessageID, ReplyTo and To in request and response. I have tried defining the MessageHeader in MessageCOntract, but this results in custom namespace prefixes. I could not find a better documentation links for this. How to set the these headers in client side and web service side?

 <?xml version="1.0"?>
    <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> <s:Header> 
    <a:Action s:mustUnderstand="1"> http://schemas.microsoft.com/windows/management/2012/01/enrollment/IDiscoveryService/Discover 
    </a:Action> 
    <a:MessageID>
    urn:uuid: 748132ec-a575-4329-b01b-6171a9cf8478
    </a:MessageID>
    <a:ReplyTo> <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo> 
    <a:To s:mustUnderstand="1"> https://ENROLLTEST.CONTOSO.COM/EnrollmentServer/Discovery.svc </a:To> 
    </s:Header> 
    <s:Body> 
    <Discover
    xmlns="http://schemas.microsoft.com/windows/management/2012/01/enrollment/"> 
    <request xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <RequestVersion>1.0</RequestVersion> 
    </request> 
    </Discover> 
    </s:Body> 
    </s:Envelope>

Upvotes: 2

Views: 7816

Answers (2)

Arsen Zahray
Arsen Zahray

Reputation: 25287

This is intended to do just that, at least for the request:

OperationContext.Current.RequestContext.RequestMessage.Headers.MessageId

Upvotes: 0

Yaron Naveh
Yaron Naveh

Reputation: 24396

Use a custom binding such that these headers are included in the request and accepted by the server:

  <binding name="NewBinding0">
    <textMessageEncoding messageVersion="Soap12WSAddressing10" />
    <httpTransport />
  </binding>

In general there is no reason to include these headers in the response, this is not mandatory by ws-addressing. If you need then push them to the message using a message inspector.

Upvotes: 2

Related Questions