7 Stimmen

Wie kann man den WCF-Dienst über SSL laufen lassen?

Ich führe einen C#-Webdienst in IIS6 aus und versuche, ihn über SSL zum Laufen zu bringen. Wenn ich einen tcpdump mache, zeigt er den ersten Aufruf als https, aber jeden anderen Aufruf über http. Mein SSL-Zertifikat ist selbst signiert und https funktioniert in meinem Webbrowser einwandfrei. Ich verwende PHP SoapClient für den Client.

Weiß jemand, was die Ursache dafür ist?

In der wsdl ist der Adressort auf http eingestellt. Sollte dies https sein? Wie kann ich das ändern?

<wsdl:service name="Service">
<wsdl:port name="BasicHttpBinding_Service" binding="i0:BasicHttpBinding_Service">
<soap:address location="http://example.com/Service.svc"/>
</wsdl:port>
</wsdl:service>

10voto

Ladislav Mrnka Punkte 355028

Sie müssen Ihren Dienst für die Verwendung von HTTPS konfigurieren:

<bindings>
  <basicHttpBinding>
    <binding name="https">
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="metadata">
      <serviceMetadata httpsGetEnabled="true" />  
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="..." behaviorConfiguration="metadata">
    <endpoint address="..." contract="..." binding="basicHttpBinding"
              bindingConfiguration="https" />
  </service>
</services>

Dies ermöglicht den Aufruf Ihres Dienstes nur über HTTPS, da kein ungesicherter Endpunkt vorhanden ist. WSDL wird auch nur über HTTPS zugänglich sein, da HTTP GET nicht aktiviert ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X