企业移动设备管理协议在HTTP POST请求中显示以下soap xml。如何将我的Web服务定义为soap标头,以在请求和响应中包含 Action,MessageID,ReplyTo和To 。我已经尝试在MessageCOntract中定义MessageHeader,但这会产生自定义名称空间前缀。我找不到更好的文档链接。如何在客户端和Web服务端设置这些头文件?
<?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>
答案 0 :(得分:1)
使用自定义绑定,以便这些标头包含在请求中并由服务器接受:
<binding name="NewBinding0">
<textMessageEncoding messageVersion="Soap12WSAddressing10" />
<httpTransport />
</binding>
通常,没有理由在响应中包含这些标头,这不是ws-addressing所必需的。如果需要,请使用消息检查器将它们推送到消息中。
答案 1 :(得分:0)
这是为了做到这一点,至少对于请求而言:
OperationContext.Current.RequestContext.RequestMessage.Headers.MessageId