2011-01-16 5 views
6

Ich habe ein sehr interessantes Verhalten der zuverlässigen Sitzung festgestellt. Ich verwende NetTcp Bindung + Duplex-Kanal + zuverlässige Sitzung.WCF Zuverlässige Sitzung ohne Transportsicherheit wird kein Ereignis rechtzeitig gestört

Wenn ich versuche, auf channel.faulted zu hören, wenn der Sicherheitsmodus für den Transport eingestellt ist, würde ein fehlerhaftes Ereignis sofort ausgelöst, wenn der Client die Verbindung trennt.

Wenn ich jedoch den Sicherheitsmodus des Binders auf None oder Message setzt, wird das fehlerhafte Ereignis nicht mehr in derselben Situation ausgelöst. Sie werden irgendwann die Hälfte von ReciveTimeout auf der Serverseite bekommen, was ich als zuverlässige Sitzung verstehe, die zu diesem Zeitpunkt eine Heartbeat-Nachricht senden würde.

Die Frage ist: Warum wird die Bindung von WCF rechtzeitig nicht gestört?

Die Problemumgehung für diesen Fall ist, kann ich manuell "Ping" Verbindungen.

+0

Was genau ist die Frage? Fragst du, warum es so ist? ... oder was kannst du dagegen tun? –

+0

Ja, tut mir leid, ist unklar. Ich wollte wissen, warum es so ist und habe einen Workaround dafür geschrieben. – Yuan

Antwort

0

Die NetTcp-Bindung verwendet standardmäßig Transport security mit Windows credentials. Alle Bindungen außer BasicHttp und WebHttp sind standardmäßig gesichert.

+0

Ja, das ist richtig. Deshalb musste ich den Sicherheitsmodus explizit auf "Keine" setzen und eine zuverlässige Sitzung nicht mehr rechtzeitig auslösen. – Yuan

Verwandte Themen