Betrouwbare sessie voor aangepaste binding via HTTPS
Het voorbeeld ReliableSessionOverHttps demonstreert het gebruik van SSL-transportbeveiliging met Reliable Sessions. Reliable Sessions implementeert het WS-Reliable Messaging-protocol. U kunt een veilige betrouwbare sessie hebben door WS-Security op te stellen via betrouwbare sessies. Maar soms kunt u ervoor kiezen om in plaats daarvan HTTP-transportbeveiliging te gebruiken met SSL.
Voorbeelddetails
SSL zorgt ervoor dat de pakketten zelf worden beveiligd. Het is belangrijk te weten dat dit verschilt van het beveiligen van de betrouwbare sessie met behulp van WS-Secure Conversation.
Als u een betrouwbare sessie via HTTPS wilt gebruiken, moet u een aangepaste binding maken. Dit voorbeeld is gebaseerd op de Aan de slag die een rekenmachineservice implementeert. Er wordt een aangepaste binding gemaakt met behulp van het betrouwbare sessiebindingselement en het httpsTransport>.< De volgende configuratie is van de aangepaste binding.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- use base address provided by host -->
<endpoint address=""
binding="customBinding"
bindingConfiguration="reliableSessionOverHttps"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed as http://localhost/servicemodelsamples/service.svc/mex-->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>
<bindings>
<customBinding>
<binding name="reliableSessionOverHttps">
<reliableSession />
<httpsTransport />
</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>
De programmacode in het voorbeeld is identiek aan die van de Aan de slag-service . U moet een certificaat maken en toewijzen met behulp van de wizard Webservercertificaat voordat u het voorbeeld bouwt en uitvoert. Met de eindpuntdefinitie en bindingsdefinitie in de instellingen voor het configuratiebestand kunt u het gebruik van aangepaste bindingen inschakelen, zoals wordt weergegeven in de volgende voorbeeldconfiguratie voor de client.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<!-- this endpoint has an https: address -->
<endpoint name=""
address="https://localhost/servicemodelsamples/service.svc"
binding="customBinding"
bindingConfiguration="reliableSessionOverHttps"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</client>
<bindings>
<customBinding>
<binding name="reliableSessionOverHttps">
<reliableSession />
<httpsTransport />
</binding>
</customBinding>
</bindings>
</system.serviceModel>
</configuration>
Het opgegeven adres maakt gebruik van het https://
schema.
Omdat het certificaat dat in dit voorbeeld wordt gebruikt, een testcertificaat is dat is gemaakt met Makecert.exe, wordt er een beveiligingswaarschuwing weergegeven wanneer u probeert toegang te krijgen tot een https: adres, zoals https://localhost/servicemodelsamples/service.svc
, vanuit uw browser. Als u wilt dat de WCF-client (Windows Communication Foundation) werkt met een testcertificaat, is er extra code toegevoegd aan de client om de beveiligingswaarschuwing te onderdrukken. Deze code en de bijbehorende klasse zijn niet vereist bij het gebruik van productiecertificaten.
// This code is required only for test certificates like those created by Makecert.exe.
PermissiveCertificatePolicy.Enact("CN=ServiceModelSamples-HTTPS-Server");
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.
Zorg ervoor dat u de installatie-instructies voor iis-servercertificaten (Internet Information Services) 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.