OperationContractAttribute.Action Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Die WS-Adressierungsaktion der Anforderungsnachricht wird abgerufen oder festgelegt.
public:
property System::String ^ Action { System::String ^ get(); void set(System::String ^ value); };
public string Action { get; set; }
member this.Action : string with get, set
Public Property Action As String
Eigenschaftswert
Die Aktion, die beim Generieren des WS-Addressing Aktionsheaders verwendet werden soll.
Ausnahmen
Der Wert ist null.
Beispiele
Das folgende Beispiel ist ein Dienst, der die ActionReplyAction SOAP-Aktionen sowohl der Eingabe- als auch der Ausgabe- (oder Antwortnachrichten) explizit steuert, und die Name Eigenschaft, um den Namen des Vorgangs in Metadaten zu steuern. Schließlich verwendet die Anwendung auch einen Action Wert von "*", um eine Methode anzugeben, die nicht erkannte Nachrichten behandelt.
using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Text;
namespace Microsoft.WCF.Documentation
{
[ServiceContract(Namespace="http://Microsoft.WCF.Documentation")]
public interface ISampleService{
[OperationContract(
Action="http://Microsoft.WCF.Documentation/OperationContractMethod",
Name="OCAMethod",
ReplyAction="http://Microsoft.WCF.Documentation/ResponseToOCAMethod"
)]
string SampleMethod(string msg);
[OperationContractAttribute(Action = "*")]
void UnrecognizedMessageHandler(Message msg);
}
class SampleService : ISampleService
{
public string SampleMethod(string msg)
{
Console.WriteLine("Called with: {0}", msg);
return "The service greets you: " + msg;
}
public void UnrecognizedMessageHandler(Message msg)
{
Console.WriteLine("Unrecognized message: " + msg.ToString());
}
}
}
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Text
Namespace Microsoft.WCF.Documentation
<ServiceContract(Namespace:="http://Microsoft.WCF.Documentation")> _
Public Interface ISampleService
<OperationContract(Action:="http://Microsoft.WCF.Documentation/OperationContractMethod", _
Name:="OCAMethod", ReplyAction:="http://Microsoft.WCF.Documentation/ResponseToOCAMethod")> _
Function SampleMethod(ByVal msg As String) As String
<OperationContractAttribute(Action := "*")> _
Sub UnrecognizedMessageHandler(ByVal msg As Message)
End Interface
Friend Class SampleService
Implements ISampleService
Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
Console.WriteLine("Called with: {0}", msg)
Return "The service greets you: " & msg
End Function
Public Sub UnrecognizedMessageHandler(ByVal msg As Message) Implements ISampleService.UnrecognizedMessageHandler
Console.WriteLine("Unrecognized message: " & msg.ToString())
End Sub
End Class
End Namespace
Ein Dienst, der diesen Vertrag implementiert, sendet Nachrichten, die wie im folgenden Beispiel aussehen:
<s:Envelope xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<a:Action s:mustUnderstand="1">http://Microsoft.WCF.Documentation/ResponseToOCAMethod</a:Action>
</s:Header>
<s:Body>
<OCAMethodResponse xmlns="http://Microsoft.WCF.Documentation">
<OCAMethodResult>The service greets you: Hello!</OCAMethodResult>
</OCAMethodResponse>
</s:Body>
</s:Envelope>
Hinweise
Verwenden Sie die Action Eigenschaft, um die Aktion der Eingabemeldung der Methode zu steuern. Da WCF diese Aktion verwendet, um eine eingehende Nachricht an die entsprechende Methode zu verteilen, müssen nachrichten, die in einem Vertragsvorgang verwendet werden, eindeutige Aktionen aufweisen. Der Standardwert ist eine Kombination aus dem Vertragsnamespace (Standardwert ist "http://tempuri.org/"), der Vertragsname (Schnittstellenname oder Klassenname, wenn keine explizite Dienstschnittstelle verwendet wird), der Vorgangsname und eine zusätzliche Zeichenfolge ("Antwort"), wenn die Nachricht eine korrelierte Antwort ist. Sie können diese Standardeinstellung mit der Action Eigenschaft überschreiben.
Um anzugeben, dass ein Dienstvorgang alle Nachrichten verarbeitet, die der Dienst empfängt, aber nicht an einen Dienstvorgang weitergeleitet werden kann, geben Sie den Wert "*" (ein Sternchen) an. Dieser Vorgangstyp, der als nicht übereinstimmender Nachrichtenhandler bezeichnet wird, muss über eine der folgenden Methodensignaturen verfügen, oder ein InvalidOperationException Fehler wird ausgelöst:
Der Dienstvorgang kann nur ein Message Objekt annehmen und ein Message Objekt zurückgeben.
Der Dienstvorgang kann nur ein Message Objekt annehmen und nichts zurückgeben (d. a. zurückgeben
void).
Hinweis
Ein Dienstvertrag kann nur einen Dienstvorgang haben, bei dem die Action Eigenschaft auf "*" festgelegt ist. Jede Gruppe von Dienstverträgen, die in derselben Listenuri gehostet werden, die von einer Dienstklasse implementiert wird, kann viele Dienstvorgänge aufweisen, wobei die Action Eigenschaft auf "*" festgelegt ist, wenn die IsInitiating Eigenschaft auf false"*" festgelegt ist. Allerdings kann nur eine dieser Dienstvorgänge die Action Eigenschaft auf "*" und die IsInitiating Eigenschaft auf "true" festgelegt haben. Weitere Details finden Sie unter IsInitiating.