Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Windows Communication Foundation (WCF) konfigurerar beteenden på två sätt: antingen genom att referera till beteendekonfigurationer – som definieras i avsnittet i <behavior> en konfigurationsfil för klientprogram – eller programmatiskt i det anropande programmet. I det här avsnittet beskrivs båda metoderna.
När du använder en konfigurationsfil är beteendekonfiguration en namngiven samling konfigurationsinställningar. Namnet på varje beteendekonfiguration måste vara unikt. Den här strängen behaviorConfiguration används i attributet för en slutpunktskonfiguration för att länka slutpunkten till beteendet.
Exempel 1
Följande konfigurationskod definierar ett beteende som kallas myBehavior. Klientslutpunkten refererar till det här beteendet i attributet 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>
Använda beteenden programmatiskt
Du kan också konfigurera eller infoga beteenden programmatiskt genom att hitta lämplig Behaviors egenskap på WCF-klientobjektet (Windows Communication Foundation) eller på klientkanalens fabriksobjekt innan klienten öppnas.
Exempel 2
I följande kodexempel visas hur du programmässigt kan infoga ett beteende genom att komma åt egenskapen Behaviors på den ServiceEndpoint, som returneras från Endpoint-egenskapen, innan kanalobjektet skapas.
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: {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