Поделиться через


Настройка поведений клиентов

Windows Communication Foundation (WCF) настраивает поведение двумя способами: путем ссылки на конфигурации поведения (которые определяются в разделе <behavior> файла конфигурации приложения) или программным образом в вызывающем приложении. В этом разделе описываются оба подхода.

При использовании файла конфигурации конфигурация поведения представляет собой именованную коллекцию параметров конфигурации. Имя каждой из конфигураций поведения должно быть уникальным. Эта строка используется в атрибуте behaviorConfiguration конфигурации конечной точки, чтобы связать конечную точку с поведением.

Пример

В следующем фрагменте кода конфигурации определяется поведение с именем myBehavior. Конечная точка клиента ссылается на это поведение в атрибуте 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>

Управление поведениями программным образом

Можно также настраивать или вставлять поведения программным образом путем поиска соответствующего свойства Behaviors в клиентском объекте Windows Communication Foundation (WCF) или в объекте клиентской фабрики каналов до того, как открыть клиент.

Пример

В следующем примере кода показано, как программным образом вставить поведение, обратившись к свойству Behaviors объекта ServiceEndpoint, возвращаемого свойством Endpoint до создания объекта канала.

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

См. также

Другие ресурсы

<behaviors>