Betrouwbare sessie voor aangepaste binding
Het ReliableSession-voorbeeld laat zien hoe u een aangepaste binding configureert met verschillende transport- en berichtcoderingselementen, met name het inschakelen van betrouwbare sessies. Een aangepaste binding wordt gedefinieerd door een geordende lijst met discrete bindingselementen.
Voorbeelddetails
Betrouwbare sessies bieden functies voor betrouwbare berichten en sessies. Betrouwbare berichten proberen de communicatie over mislukte berichten opnieuw uit te voeren en staat toe dat bezorgingsgaranties, zoals de ontvangst van berichten, worden opgegeven. Sessies behouden de status voor clients tussen aanroepen. Het voorbeeld implementeert sessies voor het onderhouden van de clientstatus en geeft in-order leveringsgaranties op. Het voorbeeld is gebaseerd op de Aan de slag waarmee een rekenmachineservice wordt geïmplementeerd. De betrouwbare sessiefuncties worden ingeschakeld en geconfigureerd in de toepassingsconfiguratiebestanden voor de client en service.
Notitie
De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.
De volgorde van bindingselementen is belangrijk bij het definiëren van een aangepaste binding, omdat elk een laag in de kanaalstack vertegenwoordigt (zie Aangepaste bindingen).
De serviceconfiguratie voor het voorbeeld wordt gedefinieerd zoals wordt weergegeven in het volgende codevoorbeeld.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
<!-- specify customBinding binding and a binding configuration to use -->
<endpoint address=""
binding="customBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<!-- custom binding configuration - configures HTTP transport, reliable sessions -->
<bindings>
<customBinding>
<binding name="Binding1">
<reliableSession />
<security authenticationMode="SecureConversation"
requireSecurityContextCancellation="true">
</security>
<compositeDuplex />
<oneWay />
<textMessageEncoding messageVersion="Soap12WSAddressing10" writeEncoding="utf-8" />
<httpTransport authenticationScheme="Anonymous" bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
proxyAuthenticationScheme="Anonymous" realm=""
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Wanneer u in een scenario voor meerdere machines wordt uitgevoerd, moet u het eindpuntadres van de client wijzigen om de hostnaam van de service weer te geven.
Wanneer u het voorbeeld uitvoert, worden de bewerkingsaanvragen en -antwoorden weergegeven in het clientconsolevenster. Druk op Enter in het clientvenster om de client af te sluiten.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Het voorbeeld instellen, compileren en uitvoeren
Installeer ASP.NET 4.0 met de volgende opdracht:
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.
Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.
Belangrijk
Wanneer u de client uitvoert in een configuratie tussen computers, moet u 'localhost' vervangen in zowel het
address
kenmerk van het <eindpuntelement> als hetclientBaseAddress
kenmerk van de <compositeDuplex> door de naam van de juiste computer, zoals wordt weergegeven in het volgende voorbeeld.<endpoint name = "" address="http://service_machine_name/servicemodelsamples/service.svc" /> <compositeDuplex clientBaseAddress="http://client_machine_name:8000/myClient/" />