WebRequest mit Client Zertifkat – zweiter Aufruf schlägt fehl

Mal wieder so eine Info, die man scheinbar eher selten im Internet findet.

Ausgangssituation: Ein SOAP Service der in .NET genutzt wird. Es gibt ein Zertifikat für die Clientauthentifizierung. So weit so gut. Das Projekt läuft auch einwandfrei. Außer ich mache mehr als einen Aufruf. dann erhalte ich folgende Fehlermeldung:

Es konnte kein geschützter SSL/TLS-Kanal erstellt werden

Wenn man nach dem Fehler sucht findet man häufig folgende Lösung. Vor .NET 4.5:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

Ab .NET 4.5 sieht das so aus:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Oftmals sieht man das Ganze noch in Kombination mit

ServicePointManager.Expect100Continue = true;

Allerdings war bei den ganzen gefunden Lösungen die Ausgangssituation eine andere: Hier konnte gar keine Abfrage durchgeführt werden. Bei mir immer nur eine. Selbst wenn der Aufruf direkt aufeinander erfolgt ist. Auch die Freigabe des Clients und das erzeugen eines neuen Clients brachte keine Abhilfe. Startete man die Anwendung neu, konnte man wieder eine Abfrage durchführen. Sprich es sah danach aus, als würde der Kanal nicht vollständig geschlossen und wiederverwendet werden.

Und genau das war es scheinbar auch, denn wenn man zusätzlich noch folgende Zeile ergänzt

ServicePointManager.MaxServicePointIdleTime = 0;

kann man auch wieder mehrere Anfragen absetzten. Möglicherweise wird das Ganze auch durch einen falsch konfigurierten Server verursacht, denn ich kann mir nicht vorstellen, dass man diese Zeile immer braucht. (Denn dann wären auch mehrere mit dem Problem / der Lösung aufgeschlagen)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert