OperationContractAttribute.Action Özellik

Tanım

İ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

String

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.

Şunlara uygulanır