在Message.CreateMessage中,“action”参数的含义是什么?

时间:2010-08-30 18:11:12

标签: .net wcf

这是交易:

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

操作:有关如何处理邮件的说明。

你们在那里放什么? “小心处理!!! ”或“ FRAGILE ”?它到底有什么不同吗?

2 个答案:

答案 0 :(得分:8)

“Action”是邮件标题中的一个字符串。

例如,此次调用

        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>

每条消息都有一个“action”标头,每个WCF操作都有一个“action”属性。在确定将每条消息分派到哪个操作时,WCF系统将比较这些值。

通常情况下,您不是手动生成消息,因此您不必担心这一点 - 它们都按默认值的预期处理。

定义服务合同时,您可以将操作字符串与操作明确关联:

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

答案 1 :(得分:0)

asked a question about the SOAPAction recently: - 我认为 SOAPAction标头用于在WSDL操作中路由消息,但我没有设法找到任何明确说明@soapAction的内容attrib在包含操作中必须是唯一的(这似乎是一个理智的WSDL路由组件的先决条件......)