Permalink

0

WCF und SQUID ergeben (417) Expectation failed.

Gestern versuchte ein Kunde eine WCF-Anwendung über seinen SQUID Proxy auszuführen, allerdings kam keine Verbindung zu Stande. Deshalb habe ich mir selbst kurz eine Windows Server 2008 Umgebung mit SQUID aufgesetzt und mir die Logfiles angeschaut. Dort wurde der Request des Clients jedes Mal mit 417 quittiert.

Dank Nahid’s Blog kam ich schnell auf die Lösung. In der app.config der Anwendung müssen folgende Nodes hinzugefügt werden.

<system.net>
  <settings>
    <servicePointManager expect100Continue="false" />
  </settings>
</system.net>

Was der Continue Status (100) genau bewirkt, ist in HTTP/1.1 W3C RFC 2616 8.2.3 beschrieben. Kurz gesagt: Der Client übertragt sofort Daten, ohne auf das OK des Servers zu warten. Dadurch könnte der Fall entstehen, dass der Client Daten übertragt, der Server diese aber ablehnt. Im Normalfall wartet der Client nach seinem Request Daten zu übertragen, auf den Status 100 des Servers.

In meinem Fall, kann dadurch am Anfang der Public Key ausgetauscht werden. Danach erfolgt die Übertragung verschlüsselt, was dank der SQUID Standardeinstellung (http_access deny CONNECT !SSL_ports) ohne Anpassungen funktioniert.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.