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?

War es hilfreich?

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.

https: // machine / Servicename

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top