Подтвердить что ты не робот

В Message.CreateMessage, в чем смысл параметра "действие"?

Здесь сделка:

public static Message CreateMessage(
    MessageVersion version,
    MessageFault fault,
    string action)

action. Описание того, как должно обрабатываться сообщение.

Что вы, ребята, там? "Обращаться осторожно!!!" или "FRAGILE"? Разве это не имеет никакого значения в конце?

4b9b3361

Ответ 1

"Действие" - это одна из строк в заголовке сообщения.

Например, этот вызов

        var m = Message.CreateMessage(MessageVersion.Default, "http://tempuri.org/MyMethod");

Выдает это сообщение

<s:Envelope
xmlns:a="http://www.w3.org/2005/08/addressing"
xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
     <a:Action s:mustUnderstand="1">http://tempuri.org/MyMethod</a:Action>
 </s:Header>   <s:Body />
 </s:Envelope>

Каждое сообщение имеет заголовок "действие", и каждая операция WCF имеет атрибут "действие". Система WCF будет сравнивать эти значения при определении того, какая операция предназначена для отправки каждого сообщения.

Обычно вы не генерируете сообщения вручную, поэтому вам не нужно беспокоиться об этом - все они обрабатываются по умолчанию по умолчанию.

Когда вы определяете контракт на обслуживание, вы можете явно связать строку действия с операцией:

[ServiceContract]
interface MyService
{
   [OperationContract(Action="http://tempuri.org/MyMethod")]
   void ThisIsntReallyCalledMyMethod(string parameter1);
}

Ответ 2

I задал вопрос о SOAPAction недавно: - Я думаю, что заголовок SOAPAction используется при маршрутизации сообщений в WSDL-операции, но мне не удалось найти что-либо, в котором явно указано, что атрибут @soapAction должен быть уникальным в рамках операции сложения (что, казалось бы, является необходимым условием для разумного компонента маршрутизации WSDL....)