WCF - как пропадает Action в SOAP-запросе при кастомной сери
От: mDmitriy Россия  
Дата: 11.04.16 11:59
Оценка:
Всем привет!

Есть WCF клиент/сервис, вполне себе работающий...
Клиент отправляет сервису примерно такой запрос:
[DataContract]
public class AttachSessionRequest
{
    [DataMember]
    public SessionType SessionType;

    [DataMember]
    public bool Always;
}

Создается такое сообщение:
  <s:Header>
    <a:Action s:mustUnderstand="1">http://tempuri.org/ISessionService/AttachSession</a:Action>
    ... 
  </s:Header>
<s:Body>
  <AttachSession xmlns="http://tempuri.org/">
    <attachSessionRequest xmlns:d4p1="http://schemas.datacontract.org/2004/07/SessionServiceInterface" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <d4p1:Always>false</d4p1:Always>
      <d4p1:SessionType>Portable</d4p1:SessionType>
    </attachSessionRequest>
  </AttachSession>
</s:Body>

Запрос почему-то оборачивается в "Action" и все это работает
Пытаюсь сделать кастомную сериализацию
return Message.CreateMessage(messageVersion, _action, serializationObject, xmlObjectSerializer)

и запрос отправляется примерно такой:
<s:Header>
  <a:Action s:mustUnderstand="1">http://tempuri.org/ISessionService/AttachSession</a:Action>
  ....   
</s:Header>
<s:Body>
  <AttachSessionRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/SessionServiceInterface">
    <Always>false</Always>
    <SessionType>Portable</SessionType>
  </AttachSessionRequest>
</s:Body>

Т.е., запрос не оборачивается в "Action" и сервер ругается, т.к. не находит ноду <AttachSession>
Вопрос — от чего зависит, будет ли помещено тело запроса внутри тэгов Action?
И что за странные префиксы "d4p1:" в исходном запросе?
Спасибо...
Отредактировано 11.04.2016 14:32 mDmitriy . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.