Bagikan melalui


Mengonfigurasi Perilaku Klien

Windows Communication Foundation (WCF) mengonfigurasi perilaku dengan dua cara: baik dengan merujuk pada konfigurasi perilaku -- yang didefinisikan di bagian <behavior> dari file konfigurasi aplikasi klien - atau secara terprogram dalam aplikasi panggilan. Topik ini menjelaskan kedua pendekatan tersebut.

Saat menggunakan file konfigurasi, konfigurasi perilaku adalah kumpulan pengaturan konfigurasi yang dinamai. Nama setiap konfigurasi perilaku harus unik. String ini digunakan dalam atribut behaviorConfiguration dari konfigurasi titik akhir untuk menautkan titik akhir ke perilaku.

Contoh 1

Kode konfigurasi berikut mendefinisikan perilaku yang dipanggil myBehavior. Titik akhir klien mereferensikan perilaku ini dalam atribut behaviorConfiguration.

<configuration>  
    <system.serviceModel>  
        <behaviors>  
            <endpointBehaviors>  
                <behavior name="myBehavior">  
                    <clientVia />  
                </behavior>  
            </endpointBehaviors>  
        </behaviors>  
        <bindings>  
            <basicHttpBinding>  
                <binding name="myBinding" maxReceivedMessageSize="10000" />  
            </basicHttpBinding>  
        </bindings>  
        <client>  
            <endpoint address="myAddress" binding="basicHttpBinding" bindingConfiguration="myBinding" behaviorConfiguration="myBehavior" contract="myContract" />  
        </client>  
    </system.serviceModel>  
</configuration>  

Menggunakan Perilaku Secara Terprogram

Anda juga dapat mengonfigurasi atau menyisipkan perilaku secara terprogram dengan menemukan properti Behaviors yang sesuai pada objek klien Windows Communication Foundation (WCF) atau pada objek pabrik saluran klien sebelum membuka klien.

Contoh 2

Contoh kode berikut menunjukkan cara menyisipkan perilaku secara terprogram dengan mengakses properti Behaviors pada ServiceEndpoint yang dikembalikan dari properti Endpoint sebelum pembuatan objek saluran.

public class Client
{
  public static void Main()
  {
    try
    {
      // Picks up configuration from the config file.
      ChannelFactory<ISampleServiceChannel> factory
        = new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");

      // Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());

      ISampleServiceChannel wcfClientChannel = factory.CreateChannel();

      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));

      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();

      // Done with service.
      wcfClientChannel.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.Read();
    }
    catch (FaultException<SampleFault> fault)
    {
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage);
      Console.Read();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message);
      Console.Read();
    }
  }
Public Class Client
    Public Shared Sub Main()
        Try
            ' Picks up configuration from the config file.
            Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")

            ' Add the client side behavior programmatically to all created channels.
            factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())

            Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()

            ' Making calls.
            Console.WriteLine("Enter the greeting to send: ")
            Dim greeting As String = Console.ReadLine()
            Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))

            Console.WriteLine("Press ENTER to exit:")
            Console.ReadLine()

            ' Done with service. 
            wcfClientChannel.Close()
            Console.WriteLine("Done!")
        Catch timeProblem As TimeoutException
            Console.WriteLine("The service operation timed out. " & timeProblem.Message)
            Console.Read()
        Catch fault As FaultException(Of SampleFault)
            Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
            Console.Read()
        Catch commProblem As CommunicationException
            Console.WriteLine("There was a communication problem. " & commProblem.Message)
            Console.Read()
        End Try
    End Sub

Lihat juga