OperationContractAttribute.Action Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia akcję WS-Addressing komunikatu żądania.
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
Wartość właściwości
Akcja do użycia podczas generowania nagłówka akcji WS-Addressing.
Wyjątki
Wartość to null
.
Przykłady
Poniższy przykład to usługa, która używa Action właściwości i ReplyAction do jawnego kontrolowania akcji PROTOKOŁU SOAP zarówno komunikatów wejściowych, jak i wyjściowych (lub odpowiedzi) oraz Name właściwości do kontrolowania nazwy operacji w metadanych. Na koniec aplikacja używa Action również wartości "*", aby wskazać metodę, która obsługuje nierozpoznane komunikaty.
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
Usługa, która implementuje ten kontrakt, wysyła komunikaty, które wyglądają jak w poniższym przykładzie:
<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>
Uwagi
Action Użyj właściwości , aby kontrolować akcję komunikatu wejściowego metody. Ponieważ program WCF używa tej akcji do wysyłania komunikatu przychodzącego do odpowiedniej metody, komunikaty używane w ramach operacji kontraktu muszą mieć unikatowe akcje. Domyślna wartość akcji to kombinacja przestrzeni nazw kontraktu (wartość domyślna to "http://tempuri.org/"
), nazwa kontraktu (nazwa interfejsu lub nazwa klasy, jeśli nie jest używany jawny interfejs usługi), nazwa operacji i dodatkowy ciąg ("Odpowiedź"), jeśli komunikat jest skorelowanym odpowiedzią. Tę wartość domyślną można zastąpić za pomocą Action właściwości .
Aby wskazać, że operacja usługi obsługuje wszystkie komunikaty odbierane przez usługę, ale nie mogą być kierowane do operacji usługi, określ wartość "*" (gwiazdka). Ten typ operacji, nazywany niepasowanym procedurą obsługi komunikatów, musi mieć jeden z następujących podpisów metody lub InvalidOperationException jest zgłaszany:
Operacja usługi może przyjmować tylko Message obiekt i zwracać Message obiekt.
Operacja usługi może przyjmować tylko Message obiekt i zwracać nic (czyli zwracać
void
wartość ).
Uwaga
Kontrakt usługi może mieć tylko jedną operację usługi z właściwością ustawioną Action na "*". Każda grupa kontraktów usług hostowanych w tym samym identyfikatorze listenUri, która implementuje klasę usług, może mieć wiele operacji usługi z właściwością Action ustawioną na "*", gdy IsInitiating właściwość jest ustawiona na false
. Jednak tylko jedna z tych operacji usługi może mieć właściwość ustawioną Action na "*" i IsInitiating właściwość ustawioną na true. Aby uzyskać więcej informacji, zobacz: IsInitiating.