IContractBehavior.ApplyDispatchBehavior Metod

Definition

Implementerar en ändring eller ett tillägg av klienten i ett kontrakt.

public:
 void ApplyDispatchBehavior(System::ServiceModel::Description::ContractDescription ^ contractDescription, System::ServiceModel::Description::ServiceEndpoint ^ endpoint, System::ServiceModel::Dispatcher::DispatchRuntime ^ dispatchRuntime);
public void ApplyDispatchBehavior(System.ServiceModel.Description.ContractDescription contractDescription, System.ServiceModel.Description.ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.DispatchRuntime dispatchRuntime);
abstract member ApplyDispatchBehavior : System.ServiceModel.Description.ContractDescription * System.ServiceModel.Description.ServiceEndpoint * System.ServiceModel.Dispatcher.DispatchRuntime -> unit
Public Sub ApplyDispatchBehavior (contractDescription As ContractDescription, endpoint As ServiceEndpoint, dispatchRuntime As DispatchRuntime)

Parametrar

contractDescription
ContractDescription

Den kontraktsbeskrivning som ska ändras.

endpoint
ServiceEndpoint

Slutpunkten som exponerar kontraktet.

dispatchRuntime
DispatchRuntime

Sändningskörningen som styr tjänstkörningen.

Exempel

I följande kodexempel förutsätts en anpassad IInstanceProvider implementering med namnet ObjectProviderBehavior som ger ett "singleton"-beteende. Den returnerar alltid samma tjänstinstans och återvinner den inte.

Om du vill infoga anpassningen av instansprovidern visar exemplet hur du implementerar ett anpassat attribut (SingletonBehaviorAttribute) som implementeras IContractBehavior för att infoga instansprovidern för anpassade tjänster. Den implementerar IContractBehaviorAttributeockså , som binder dess användning till ISampleService kontraktet.

public class SingletonBehaviorAttribute : Attribute, IContractBehaviorAttribute, IContractBehavior
{

  #region IContractBehaviorAttribute Members

  public Type TargetContract
  {
    get { return typeof(ISampleService); }
  }

  #endregion

  #region IContractBehavior Members

  public void AddBindingParameters(ContractDescription description, ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection parameters)
  {
    return;
  }

  public void ApplyClientBehavior(ContractDescription description, ServiceEndpoint endpoint, ClientRuntime clientRuntime)
  {
    return;
  }

  public void ApplyDispatchBehavior(ContractDescription description, ServiceEndpoint endpoint, DispatchRuntime dispatch)
  {
    dispatch.InstanceProvider = new ObjectProviderBehavior("Custom ObjectProviderBehavior constructor.");
  }

  public void Validate(ContractDescription description, ServiceEndpoint endpoint)
  {
    return;
  }

  #endregion
}
Public Class SingletonBehaviorAttribute
    Inherits Attribute
    Implements IContractBehaviorAttribute, IContractBehavior

  #Region "IContractBehaviorAttribute Members"

  Public ReadOnly Property TargetContract() As Type Implements IContractBehaviorAttribute.TargetContract
    Get
        Return GetType(ISampleService)
    End Get
  End Property

  #End Region

  #Region "IContractBehavior Members"

  Public Sub AddBindingParameters(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint, ByVal parameters As System.ServiceModel.Channels.BindingParameterCollection) Implements IContractBehavior.AddBindingParameters
    Return
  End Sub

  Public Sub ApplyClientBehavior(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint, ByVal clientRuntime As ClientRuntime) Implements IContractBehavior.ApplyClientBehavior
    Return
  End Sub

  Public Sub ApplyDispatchBehavior(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint, ByVal dispatch As DispatchRuntime) Implements IContractBehavior.ApplyDispatchBehavior
    dispatch.InstanceProvider = New ObjectProviderBehavior("Custom ObjectProviderBehavior constructor.")
  End Sub

  Public Sub Validate(ByVal description As ContractDescription, ByVal endpoint As ServiceEndpoint) Implements IContractBehavior.Validate
    Return
  End Sub

  #End Region
End Class

Kommentarer

ApplyDispatchBehavior Implementera för att visa, ändra eller lägga till anpassade tillägg till tjänstkörningen för alla meddelanden i ett specifikt kontrakt eller för en specifik åtgärd i kontraktet. Mer information om vilka anpassningar du kan utföra i ett tjänstprogram DispatchRuntime finns i och DispatchOperation.

Metoden ApplyDispatchBehavior kan utlösa ett NotImplementedException undantag om beteendet endast är avsett för användning i ett klientprogram.

Den här metoden anropas en gång för varje slutpunkt som använder det angivna tjänstkontraktet.

Observera att det kan finnas två åtgärder med samma namn i beskrivningen (en i varje riktning), så om du måste iterera genom åtgärder där kontraktet är ett duplex-kontrakt måste du korrelera meddelanderiktningen mellan slutpunkten DispatchRuntime och den som returneras av CallbackClientRuntime egenskapen.

Eftersom andra beteenden kanske redan har lagt till eller tagit bort vissa åtgärder från körningen finns det dessutom ingen garanti för att det finns samma antal åtgärder i beskrivningen DispatchOperation som det finns Operations objekt i egenskapen.

Gäller för