IEndpointBehavior.ApplyDispatchBehavior Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Implementálja a szolgáltatás módosítását vagy kiterjesztését egy végponton keresztül.
public:
void ApplyDispatchBehavior(System::ServiceModel::Description::ServiceEndpoint ^ endpoint, System::ServiceModel::Dispatcher::EndpointDispatcher ^ endpointDispatcher);
public void ApplyDispatchBehavior(System.ServiceModel.Description.ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher);
abstract member ApplyDispatchBehavior : System.ServiceModel.Description.ServiceEndpoint * System.ServiceModel.Dispatcher.EndpointDispatcher -> unit
Public Sub ApplyDispatchBehavior (endpoint As ServiceEndpoint, endpointDispatcher As EndpointDispatcher)
Paraméterek
- endpoint
- ServiceEndpoint
A szerződést közzétető végpont.
- endpointDispatcher
- EndpointDispatcher
A módosítani vagy bővíteni kívánt végpont-diszpécser.
Példák
Az alábbi példakód egy olyan végponti viselkedés implementálását mutatja be, amely egy objektumot System.ServiceModel.Dispatcher.IDispatchMessageInspector ad hozzá egy szolgáltatásalkalmazáshoz. Ebben az esetben az osztály végrehajtja EndpointBehaviorMessageInspector a System.ServiceModel.Dispatcher.IDispatchMessageInspector bejövő és kimenő üzenet vizsgálatát, a IEndpointBehavior felügyelő osztálynak a felügyeleti rendszerbe való beszúrásának felületét minden olyan végpont esetében, amelyre a viselkedés vonatkozik, valamint az System.ServiceModel.Configuration.BehaviorExtensionElement üzenetfelügyelő viselkedésének engedélyezésére egy alkalmazáskonfigurációs fájl használatával.
Az első lépés az üzenetfelügyelő implementálása.
// IDispatchMessageInspector Members
public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
Console.WriteLine("AfterReceiveRequest called.");
return null;
}
public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
Console.WriteLine("BeforeSendReply called.");
}
A következő példakód az üzenetfelügyelő ApplyDispatchBehavior tulajdonsághoz való hozzáadására szolgáló metódus használatát DispatchRuntime.MessageInspectors mutatja be.
// IEndpointBehavior Members
public void AddBindingParameters(ServiceEndpoint serviceEndpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
return;
}
public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime behavior)
{
behavior.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}
public void ApplyDispatchBehavior(ServiceEndpoint serviceEndpoint, EndpointDispatcher endpointDispatcher)
{
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}
public void Validate(ServiceEndpoint serviceEndpoint)
{
return;
}
Az alábbi példakód az üzenetfelügyelő viselkedésének konfigurációs fájlból való használatának engedélyezéséhez mutatja be a megvalósítást System.ServiceModel.Configuration.BehaviorExtensionElement .
// BehaviorExtensionElement members
public override Type BehaviorType
{
get { return typeof(EndpointBehaviorMessageInspector); }
}
protected override object CreateBehavior()
{
return new EndpointBehaviorMessageInspector();
}
Végül az alábbi konfigurációs fájl bemutatja, hogyan használható az előző példa a konfigurációból.
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.WCF.Documentation.SampleService"
behaviorConfiguration="metadataSupport"
>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/ServiceMetadata" />
</baseAddresses>
</host>
<endpoint
address="/SampleService"
binding="wsHttpBinding"
behaviorConfiguration="withMessageInspector"
contract="Microsoft.WCF.Documentation.ISampleService"
/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="withMessageInspector">
<endpointMessageInspector />
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add
name="endpointMessageInspector"
type="Microsoft.WCF.Documentation.EndpointBehaviorMessageInspector, HostApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
/>
</behaviorExtensions>
</extensions>
</system.serviceModel>
</configuration>
Megjegyzések
Implementálja a ApplyDispatchBehavior szolgáltatás futtatókörnyezetének megtekintésére, módosítására vagy kiterjesztésére szolgáló módszert az összes üzenetre vagy egy végpont adott műveleteire vonatkozóan. A szolgáltatásalkalmazásokban elvégezhető testreszabásokról további információt a következő témakörben talál System.ServiceModel.Dispatcher.DispatchRuntimeSystem.ServiceModel.Dispatcher.DispatchOperation:
Javasoljuk, hogy a ApplyDispatchBehavior metódus kivételt NotImplementedException adjon ki, ha a viselkedés csak ügyfélalkalmazásban való használatra szolgál.
Vegye figyelembe, hogy egy visszahívási szerződés használatakor két azonos nevű művelet is lehet a leírásban (minden irányban egy művelet). Ha a műveleteken keresztül halad végig, korrelálnia kell az üzenet irányát a végpont System.ServiceModel.Dispatcher.DispatchRuntime és a DispatchRuntime.CallbackClientRuntime tulajdonság által visszaadott üzenet között.
Emellett mivel más viselkedések már hozzáadtak vagy eltávolítottak bizonyos műveleteket a futtatókörnyezetből, nincs garancia arra, hogy a leírásban ugyanannyi művelet szerepel, mint System.ServiceModel.Dispatcher.DispatchOperation a DispatchRuntime.Operations tulajdonságban található objektumok.