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-Addressing 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 Eylemi üst bilgisini oluştururken kullanılacak eylem.
Özel durumlar
Bu durumda değer null
olur.
Örnekler
Aşağıdaki örnek, hem giriş hem de çıkış (veya yanıt) iletilerinin SOAP eylemlerini ve meta verilerdeki işlemin adını denetlemek için özelliğini açıkça denetlemek için ve ReplyAction Name özelliklerini 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 bir iletiyi uygun yönteme göndermek için bu eylemi kullandığından, 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 hizmet arabirimi kullanılmıyorsa sınıf adı), işlem adı ve ileti bağıntılı bir yanıt ise ek 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 "*" (yıldız işareti) değerini 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 nesnesi alabilir ve hiçbir şey döndüremez (yani döndür ).
void
Not
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 herhangi bir hizmet sözleşmesi grubu, özellik olarak ayarlandığında false
özelliği "*" olarak ayarlanmış birçok hizmet işlemine Action IsInitiating sahip 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.