Einstellen Transportebene Sicherheit auf webHttp WCF-Dienst
Frage
Ich versuche, Satz Transportebene Sicherheit auf einem webHttp Bindung WCF-Dienst meine aktuelle Konfiguration sieht wie folgt aus
<system.serviceModel>
<client>
<endpoint binding="webHttpBinding" bindingConfiguration="webHttp"
contract="PrimeStreamInfoServices.IService1" name="Client" />
</client>
<bindings>
<webHttpBinding>
<binding name="webHttp" maxBufferPoolSize="1500000" maxReceivedMessageSize="1500000" maxBufferSize="1500000">
<security mode="Transport">
<transport clientCredentialType="None"
proxyCredentialType="None"
realm="string" />
</security>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="PrimeStreamInfoServices.Service1" behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
<!-- Service Endpoints -->
<endpoint address="" binding="webHttpBinding" bindingConfiguration="webHttp" contract="PrimeStreamInfoServices.IService1">
<!--
Upon deployment, the following identity element should be removed or replaced to reflect the
identity under which the deployed service runs. If removed, WCF will infer an appropriate identity
automatically.
-->
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="PrimeStreamInfoServices.Service1Behavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<diagnostics>
<messageLogging logMalformedMessages="true" logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
aber wenn ich meinen Dienst ausführen ich eine Ausnahme erhalten: Es kann keine Basisadresse finden, die mit der Bindung WebHttpBinding Schema https für den Endpunkt übereinstimmt. Registrierte Basisadresse Schemen sind [http].
Ich weiß, im fehlt etwas, und ich habe verschiedene Dinge versucht, ich kann es herauszufinden, bekam jemand eine Eingabe auf, was ich tun?
Lösung
Ja - Umstellung auf HTTPS, mit einem geeigneten Zertifikat. Transportsicherheit im Fall von HTTP wird durch einen SSL-Kanal bereitgestellt. Sie können nicht haben WS * Transportsicherheit über HTTPS Ebene
Andere Tipps
Ignorieren meine vorherige Antwort, dachte ich wsHttpBinding nicht WebHttpBinding.
Es ist die Adresse, die Sie verwenden, den Dienst zu nennen, die mit https beginnen.
Können Sie versuchen, eine Basisadresse (innerhalb des <host>
Element Ihrer Dienstkonfiguration), die https hinzufügen? Handelt es sich um eine (oder mehrere) Basis-Adresse (n) im Code?
<service name="PrimeStreamInfoServices.Service1"
behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
<host>
<baseAddresses>
<add baseAddress="https://localhost:8080/YourService.svc" />
</baseAddresses>
</host>
<!-- Service Endpoints -->
<endpoint ......
</service>
nicht 100% sicher, ob das funktioniert mit dem webHttpBinding, aber probieren Sie es aus!
Marc
Beachten Sie, dass neben der rechten WCF Config, Sie müssen auch configure IIS Eigenschaft SSL auf es ermöglichen (einschließlich des Rechts X.509-Zertifikat für die SSL-Einstellung). Der docs hat einige anständigen Informationen darüber, wie es zu tun.