IContractBehavior.ApplyDispatchBehavior Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.