Konfigurieren von ClientverhaltenConfiguring Client Behaviors

Windows Communication Foundation (WCF) konfiguriert Verhaltensweisen auf zwei Arten: entweder durch Verweisen auf verhaltenskonfigurationen – in definiert sind die <behavior> Abschnitt einer Konfigurationsdatei der Clientanwendung – oder programmgesteuert in der aufrufenden die Anwendung.Windows Communication Foundation (WCF) configures behaviors in two ways: either by referring to behavior configurations -- which are defined in the <behavior> section of a client application configuration file – or programmatically in the calling application. In diesem Abschnitt werden beide Ansätze beschrieben.This topic describes both approaches.

Bei Verwendung einer Konfigurationsdatei ist die Verhaltenskonfiguration eine benannte Auflistung von Konfigurationseinstellungen.When using a configuration file, behavior configuration is a named collection of configuration settings. Der Name jeder Verhaltenskonfiguration muss eindeutig sein.The name of each behavior configuration must be unique. Diese Zeichenfolge wird im behaviorConfiguration-Attribut einer Endpunktkonfiguration zum Verknüpfen des Endpunkts mit dem Verhalten verwendet.This string is used in the behaviorConfiguration attribute of an endpoint configuration to link the endpoint to the behavior.

BeispielExample

Der folgende Konfigurationscode definiert ein Verhalten mit der Bezeichnung myBehavior.The following configuration code defines a behavior called myBehavior. Der Clientendpunkt verweist im behaviorConfiguration-Attribut auf dieses Verhalten.The client endpoint references this behavior in the behaviorConfiguration attribute.

<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>  

Programmgesteuertes Verwenden von VerhaltensweisenUsing Behaviors Programmatically

Können Sie auch konfigurieren oder Verhalten programmgesteuert einfügen, suchen Sie die entsprechende Behaviors Eigenschaft auf der Windows Communication Foundation (WCF)-Clientobjekt oder die clientkanalfactory-Objekt vor dem Öffnen des Clients.You can also configure or insert behaviors programmatically by locating the appropriate Behaviors property on the Windows Communication Foundation (WCF) client object or on the client channel factory object prior to opening the client.

BeispielExample

Im folgenden Codebeispiel wird das programmgesteuerte Einfügen eines Verhaltens durch Zugreifen auf die Behaviors-Eigenschaft auf dem ServiceEndpoint veranschaulicht, der vor der Erstellung des Kanalobjekts von der Endpoint-Eigenschaft zurückgegeben wurde:The following code example shows how to programmatically insert a behavior by accessing the Behaviors property on the ServiceEndpoint returned from the Endpoint property prior to the creation of the channel object.

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

Siehe auchSee Also

<behaviors><behaviors>