OperationContractAttribute.Action Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İstek iletisinin WS-Adresleme eylemini alır veya ayarlar.
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
Özellik Değeri
WS-Addressing Eylem üst bilgisini oluştururken kullanılacak eylem.
Özel durumlar
Bu durumda değer null olur.
Örnekler
Aşağıdaki örnek, giriş ve çıkış (veya yanıt) iletilerinin SOAP eylemlerini açıkça denetlemek için ve ReplyAction özelliklerini ve Name meta verilerdeki işlemin adını denetlemek için özelliğini kullanan Action bir hizmettir. Son olarak, uygulama tanınmayan iletileri işleyen bir Action yöntemi belirtmek için "*" değerini de kullanır.
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
Bu sözleşmeyi uygulayan bir hizmet, aşağıdaki örneğe benzer iletiler gönderir:
<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>
Açıklamalar
yönteminin Action giriş iletisinin eylemini denetlemek için özelliğini kullanın. WCF gelen iletiyi uygun yönteme göndermek için bu eylemi kullandığından, bir sözleşme işlemi içinde kullanılan iletilerin benzersiz eylemleri olmalıdır. Varsayılan eylem değeri, sözleşme ad alanının (varsayılan değer), "http://tempuri.org/"sözleşme adı (arabirim adı veya açık bir hizmet arabirimi kullanılmadıysa sınıf adı), işlem adı ve ileti bağıntılı bir yanıtsa ek bir dizenin ("Yanıt") birleşimidir. Bu varsayılanı özelliğiyle Action geçersiz kılabilirsiniz.
Bir hizmet işleminin hizmetin aldığı ancak bir hizmet işlemine yönlendirilemediği tüm iletileri işlediğini belirtmek için "*" değerini (yıldız işareti) belirtin. Eşleşmeyen ileti işleyicisi olarak adlandırılan bu işlem türü aşağıdaki yöntem imzalarından birine sahip olmalıdır veya bir InvalidOperationException oluşturulur:
Hizmet işlemi yalnızca bir Message nesne alabilir ve bir Message nesne döndürebilir.
Hizmet işlemi yalnızca bir Message nesne alabilir ve hiçbir şey döndüremez (yani döndür ).
void
Uyarı
Bir hizmet sözleşmesinin özelliği "*" olarak ayarlanmış tek bir hizmet işlemi Action olabilir. Bir hizmet sınıfının uyguladığı aynı listenUri'de barındırılan tüm hizmet sözleşmeleri grubu, özelliği olarak ayarlandığında "*" olarak ayarlanmış birçok hizmet işlemine ActionIsInitiatingfalsesahip olabilir. Ancak, bu hizmet işlemlerinden Action yalnızca birinin özelliği "*" ve IsInitiating özelliği true olarak ayarlanabilir. Diğer ayrıntılar için bkz. IsInitiating.