2013-06-23 5 views
1

Протокол управления мобильным устройством предприятия показывает нижнее мыло xml в HTTP POST Request. Как я могу определить свой веб-сервис для заголовков мыла, чтобы включить в запрос и ответ Action, MessageID, ReplyTo и To. Я попытался определить MessageHeader в MessageCOntract, но это приводит к созданию пользовательских префиксов пространства имен. Я не мог найти для этого лучшие ссылки для документации. Как установить эти заголовки на стороне клиента и веб-службы?Как добавить MessageID в заголовки мыла запроса и ответа WCF?

<?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> 

ответ

1

Используйте пользовательские привязки таким образом, что эти заголовки включены в запросе и приняты сервером:

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

В целом нет никаких оснований, чтобы включить эти заголовки в ответ, это не обязательный с помощью ws-адресации. Если вам нужно, то нажмите на сообщение, используя инспектор сообщений.

+0

Naveh, Спасибо за ваш ответ. После изменения привязки к пользовательской привязке с версией сообщения «Soap12WSAddressing10», я могу протестировать и получить правильное soap xml в приложении Client Test Test, предоставляемом MSFT. Но у меня есть проблемы с доступом к веб-сервису, размещенному в IIS, из моего приложения. Я получаю ошибку 400, поскольку сервер не найден. –

+0

это, вероятно, другая проблема. Я предлагаю вам открыть новый вопрос, чтобы он получил правильное внимание. Попробуйте получить доступ к WSDL-файлу в браузере, чтобы узнать, работает ли это по крайней мере. Если нет, может быть проблема iis, попробуйте загрузить dummy asp.net pp, чтобы узнать, работает ли она. –

+0

Спасибо, я могу просмотреть файл WSDL из IIS. Я буду проверять это и задать вопрос, если мне нужна помощь. –

0

Это предназначено, чтобы сделать только, что, по крайней мере, для запроса:

OperationContext.Current.RequestContext.RequestMessage.Headers.MessageId

Смежные вопросы