ReliableSession.InactivityTimeout Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft ein Zeitintervall ab oder legt ein Zeitintervall fest, währenddessen ein Dienst vor Schließung inaktiv bleiben kann.
public:
property TimeSpan InactivityTimeout { TimeSpan get(); void set(TimeSpan value); };
public TimeSpan InactivityTimeout { get; set; }
member this.InactivityTimeout : TimeSpan with get, set
Public Property InactivityTimeout As TimeSpan
Eigenschaftswert
Die TimeSpan, die das Zeitintervall angibt, während der ein Dienst vor Schließung inaktiv bleibt. Der Standardwert beträgt 10 Minuten.
Ausnahmen
Der festgelegte Wert ist kleiner oder gleich 0.
Beispiele
// Create a new reliable session object
ReliableSessionBindingElement bindingElement = new ReliableSessionBindingElement();
ReliableSession reliableSession = new ReliableSession(bindingElement);
// Now you can access property values
Console.WriteLine("Ordered: {0}", reliableSession.Ordered);
Console.WriteLine("InactivityTimeout: {0}", reliableSession.InactivityTimeout);
' Create a new reliable session object
Dim bindingElement As ReliableSessionBindingElement = New ReliableSessionBindingElement()
Dim reliableSession As ReliableSession = New ReliableSession(bindingElement)
' Now you can access property values
Console.WriteLine("Ordered: {0}", reliableSession.Ordered)
Console.WriteLine("InactivityTimeout: {0}", reliableSession.InactivityTimeout)
Hinweise
Die Eigenschaft ruft den Wert der InactivityTimeout-Eigenschaft ab und legt ihn fest.
Aktivität auf einem Kanal wird als Empfang einer Anwendungs- oder Infrastrukturnachricht definiert. Diese Eigenschaft für das Inaktivitätstimeout steuert die maximale Zeitdauer, die erforderlich ist, um eine inaktive Sitzung am Leben zu erhalten. Bei einem Zeitintervall länger als unter InactivityTimeout angegeben, wird die Sitzung durch die Infrastruktur beendet, und im Kanal wird ein Fehler ausgelöst. Die zuverlässige Sitzung wird einseitig abgebrochen.
Wenn die sendende Anwendung keine Nachrichten zum Senden hat, zeigt die zuverlässige Sitzung normalerweise keinen Fehler wegen Inaktivität an. Stattdessen wird die Sitzung durch einen Keep-Alive-Mechanismus unbegrenzt aktiv gehalten. Der Verteiler kann unabhängig davon die zuverlässige Sitzung abbrechen, wenn keine Anwendungsnachrichten gesendet oder empfangen werden. Deshalb läuft das Timeout bei Inaktivität normalerweise ab, wenn die Netzwerkbedingungen dazu führen, dass keine Nachrichten empfangen werden oder beim Absender ein Fehler auftritt.
Durch Einstellen dieses Timeouts wird der Server daran gehindert, eine Sicherheitssitzung weiter auszuführen, wenn sie nicht vom Client beendet wird. Wenn die Sicherheitssitzung während des Inaktivitätsintervalls keine Nachricht empfängt, wird sie vom Server beendet. Dies schwächt einen potenziellen Denial-of-Service-Angriff ab.
Bei der Verwendung einer zuverlässigen Sitzung sind zwei verschiedene Inaktivitätszeitgeber vorhanden, deren Voraussetzungen erfüllt werden müssen, um die Verbindung aufrechtzuerhalten. Wenn einer dieser Inaktivitätstimer ausgeht, dann wird die Verbindung beendet.
Der erste Inaktivitätstimer befindet sich in der zuverlässigen Sitzung und wird als InactivityTimeout bezeichnet. Dieser Inaktivitätstimer wird ausgelöst, wenn innerhalb des Timeouts keine Nachrichten von der Anwendung oder der Infrastruktur empfangen werden. Eine Infrastrukturnachricht wird eher für den Zweck eines der Protokolle in einem Kanalstapel generiert, wie z. B dem Aufrechterhalten oder einer Bestätigung, als dass es Anwendungsdaten enthielte.
Der zweite Inaktivitätstimer ist im Dienst und verwendet die Einstellung ReceiveTimeout der Bindung. Dieser Inaktivitätstimer wird ausgelöst, wenn innerhalb des Timeouts keine Anwendungsnachrichten empfangen werden.
Da die Verbindung beendet wird, wenn einer der Inaktivitätstimer ausgelöst wird, besitzt die Erhöhung der InactivityTimeout keine Auswirkungen, sobald sie größer als die ReceiveTimeout ist. Der Standardwert für beide Timeouts beträgt 10 Minuten, sodass bei Verwendung einer zuverlässigen Sitzung stets beide erhöht werden müssen, um etwas zu bewirken.