Delen via


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

  1. Installeer ASP.NET 4.0 met de volgende opdracht:

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.

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

  4. 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 het clientBaseAddress 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/" />