2010-08-30 6 views
12

est ici l'affaire:Dans Message.CreateMessage, quelle est la signification du paramètre "action"?

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

l'action : Une description de la façon dont doit être traité le message.

Qu'est-ce que vous mettez là-dedans? "Manipuler avec soin !!!" ou "FRAGILE"? Cela fait-il une différence à la fin?

+0

Cela pourrait aider: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/faddaf03-17a2-4c3d-a0ea-88add3d88323 – Bernard

Répondre

8

La "Action" est l'une des chaînes dans l'en-tête du message.

Par exemple, cet appel

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

Produit ce message

<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> 

Chaque message a un en-tête "d'action", et chaque opération de WCF a un attribut "action". Le système WCF compare ces valeurs pour déterminer à quelle opération envoyer chaque message.

Normalement, vous ne générez pas de messages manuellement, vous n'avez donc pas à vous soucier de cela - tout est géré comme prévu par les valeurs par défaut.

Lorsque vous définissez le contrat de service, vous pouvez associer explicitement une chaîne d'action avec une opération:

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

Je asked a question about the SOAPAction recently: - Je pense que l'en-tête SOAPAction est utilisé dans le routage des messages dans une opération WSDL, mais je ne l'ai pas réussi à trouver quoi que ce soit qui stipule explicitement que le attrib @soapAction doit être unique dans le contenant opération (qui semblerait être une condition préalable pour un composant de routage WSDL sain ...)

+1

il a été utilisé - pour SOAP 1.1, l'en-tête SOAPAction contient la méthode à appeler. Cela a été déplacé vers l'en-tête de type de contenu pour SOAP 1.2, puis WS-Addressing l'a déplacé ailleurs à nouveau. Juste ne vous embêtez pas à utiliser SOAP si vous voulez quelque chose de sain :) – gbjbaanb

Questions connexes