Aracılığıyla paylaş


OperationContractAttribute.Action Özellik

Tanım

İ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.

Şunlara uygulanır