IEndpointBehavior.ApplyDispatchBehavior Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menerapkan modifikasi atau ekstensi layanan di seluruh titik akhir.
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)
Parameter
- endpoint
- ServiceEndpoint
Titik akhir yang mengekspos kontrak.
- endpointDispatcher
- EndpointDispatcher
Dispatcher titik akhir yang akan dimodifikasi atau diperluas.
Contoh
Contoh kode berikut menunjukkan implementasi perilaku titik akhir yang menambahkan System.ServiceModel.Dispatcher.IDispatchMessageInspector objek dalam aplikasi layanan. Dalam hal ini, EndpointBehaviorMessageInspector kelas mengimplementasikan System.ServiceModel.Dispatcher.IDispatchMessageInspector untuk memeriksa pesan masuk dan keluar, IEndpointBehavior antarmuka untuk memasukkan kelas inspektur ke dalam sistem inspeksi untuk semua titik akhir yang perilakunya berlaku, dan System.ServiceModel.Configuration.BehaviorExtensionElement untuk mengaktifkan perilaku pemeriksa pesan menggunakan file konfigurasi aplikasi.
Langkah pertama adalah mengimplementasikan pemeriksa pesan.
// 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.");
}
Contoh kode berikutnya menunjukkan penggunaan ApplyDispatchBehavior metode untuk menambahkan pemeriksa pesan ke DispatchRuntime.MessageInspectors properti .
// 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;
}
Contoh kode berikut menunjukkan implementasi System.ServiceModel.Configuration.BehaviorExtensionElement untuk mengaktifkan penggunaan perilaku pemeriksa pesan dari file konfigurasi.
// BehaviorExtensionElement members
public override Type BehaviorType
{
get { return typeof(EndpointBehaviorMessageInspector); }
}
protected override object CreateBehavior()
{
return new EndpointBehaviorMessageInspector();
}
Terakhir, file konfigurasi berikut menunjukkan bagaimana contoh sebelumnya dapat digunakan dari konfigurasi.
<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>
Keterangan
Terapkan ApplyDispatchBehavior metode untuk melihat, memodifikasi, atau memperluas runtime layanan di semua pesan atau untuk operasi tertentu di titik akhir. Untuk detail tentang kustomisasi apa yang dapat Anda lakukan dalam aplikasi layanan, lihat System.ServiceModel.Dispatcher.DispatchRuntime dan System.ServiceModel.Dispatcher.DispatchOperation.
Disarankan agar ApplyDispatchBehavior metode melemparkan NotImplementedException pengecualian jika perilaku hanya dimaksudkan untuk digunakan dalam aplikasi klien.
Perhatikan bahwa mungkin ada dua operasi dengan nama yang sama dalam deskripsi saat menggunakan kontrak panggilan balik (satu operasi di setiap arah). Jika Anda melakukan iterasi melalui operasi, Anda harus menghubungkan arah pesan antara titik System.ServiceModel.Dispatcher.DispatchRuntime akhir dan apa yang dikembalikan oleh DispatchRuntime.CallbackClientRuntime properti .
Selain itu, karena perilaku lain mungkin telah menambahkan atau menghapus beberapa operasi dari runtime, tidak ada jaminan bahwa ada jumlah operasi yang sama dalam deskripsi karena ada System.ServiceModel.Dispatcher.DispatchOperation objek dalam DispatchRuntime.Operations properti.