Связь между именем операции WCF и действием - PullRequest
4 голосов
/ 28 февраля 2012

У меня есть служба WCF, определенная следующим образом:

[ServiceContract(Namespace = "http://AttributeServiceNameSpace", Name = "AttributeServiceName1")]
public interface IHelloIndigoService1
{
    [OperationContract(Name="AttributeOperationName11", Action = "aaa2")]
    String HelloIndigo11();


    [OperationContract(Name = "AttributeOperationName12", Action = "aaa1")]
    String HelloIndigo12();
}

И я перехватила HTTP-сообщение во время вызова службы, как показано ниже.

POST http://xxx/Service.svc/IHelloIndigoServiceAddress1 HTTP /1.1

Content-Type: text / xml;charset = utf-8

SOAPAction: " aaa2 "

Хост: shao-02.fareast.corp.microsoft.com

Content-Length: 162

Ожидается: 100-продолж.

Соединение: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
     <AttributeOperationName11 xmlns="http://AttributeServiceNameSpace"/>
  </s:Body>
</s:Envelope>

Таким образом, мы видим, что оба действия и имя операции существуют в сообщении SOAP для вызовасервис.

Но мне просто интересно: зачем нам нужны Действие и Имя операции для идентификации одного метода обслуживания?Только одного должно быть достаточно.

1 Ответ

2 голосов
/ 28 февраля 2012

Вам не нужны Action и OperationName для идентификации работы сервиса. Имя операции определяет структуру (имя элемента-оболочки) сообщения SOAP, но оно не используется для идентификации операции. Действие используется для идентификации операции.

Существуют некоторые нестандартные парсеры SOAP, использующие имя операции (корневой элемент тела) для идентификации операции, но эти парсеры не используют действие SOAP.

Редактировать: у меня сегодня была беседа с моим коллегой, и, похоже, мой предыдущий ответ неверен. Настоящей уникальной идентификацией сообщения в протоколе SOAP является SOAP Action + Root element. Таким образом, в этом случае Action определяет действие SOAP, а OperationName определяет имя элемента-оболочки (используется в качестве корневого элемента сообщения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...