Отсутствие элементов WS-Addressing в заголовке Soap с использованием WCF / .NET Compact Framework - PullRequest
0 голосов
/ 25 октября 2011

Мне необходимо использовать WS-Addressing / WS-Security в наших сервисах WCF. Службы вызываются мобильным устройством Windows Mobile 6 / .NET Compact Frameowk 3.5.

У меня почти все работает, но по какой-то причине MessageID не включается в мой заголовок, и он указан как требование. В привязке и клиенте указан Soap12WSAddressing10. Я получаю это из журнала транспортного уровня:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <s:Header>
    <a:Action s:mustUnderstand="1" u:Id="_3">http://tempuri.org/ISyncService/GetSchemaResponse</a:Action>
    <ActivityId CorrelationId="28815cbc-7d07-45ea-9ce6-ce0a68a375f2" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">7a63c3ec-5955-47fd-9af2-45211b839783</ActivityId>
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <u:Timestamp u:Id="uuid-4fb4f460-8485-492b-9865-1b4b49c5c187-16">
      <u:Created>2011-10-24T22:09:53.182Z</u:Created>
      <u:Expires>2011-10-24T22:14:53.182Z</u:Expires>
    </u:Timestamp>

Есть предложения?

1 Ответ

0 голосов
/ 17 февраля 2012

Я не знаю, если вопрос уже ответил.Я предполагаю, что вы хотите добавить заголовок адресации ws MessageId в вашем ответе.Вы можете реализовать IDispatchMessageInspector, а в функции beforesendreply вы можете добавить MessageId в ответ (я использовал VB.NET, но C # должен быть эквивалентен):

Public Sub BeforeSendReply(ByRef reply As System.ServiceModel.Channels.Message, ByVal correlationState As Object) Implements IDispatchMessageInspector.BeforeSendReply
   reply.Headers.MessageId = New UniqueId(Guid.NewGuid())
End sub

В моем случае обаMessageId и To -заголовок отсутствовали в моем ответе при использовании messageversion Soap11WSAddressing10 or Soap12WSAddressing10.Мне удалось добавить MessageId с указанным выше кодом, но если я пытаюсь добавить заголовок To таким же образом, заголовок To никогда не включается, когда ответ приходит к клиенту.

...