ReliableSession.InactivityTimeout Proprietà

Definizione

Ottiene o imposta l'intervallo di tempo durante il quale un servizio può rimanere inattivo prima di essere chiuso.

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

Valore della proprietà

TimeSpan

Struttura TimeSpan che specifica l'intervallo di tempo massimo per cui un servizio può rimanere inattivo prima di essere chiuso. Il valore predefinito è 10 minuti.

Eccezioni

Il valore impostato è minore o uguale a zero.

Esempio

// 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)

Commenti

La proprietà ottiene e imposta il valore della proprietà InactivityTimeout.

L'attività in un canale viene definita come ricezione di un messaggio di un'applicazione o di un'infrastruttura. La proprietà relativa al timeout di inattività controlla l'intervallo di tempo massimo per cui una sessione può essere mantenuta inattiva. Se trascorre un intervallo di tempo superiore al valore di InactivityTimeout specificato senza che venga eseguita alcuna attività, la sessione viene interrotta dall'infrastruttura e il canale restituisce un errore. La sessione attendibile viene eliminata in modo unilaterale.

Se l'applicazione di invio non ha messaggi da inviare, la sessione attendibile non viene in genere interrotta per inattività, ma viene invece mantenuta attiva a tempo indeterminato da un meccanismo keep-alive. Il dispatcher può comunque interrompere la sessione attendibile in maniera indipendente qualora non vengano inviati né ricevuti messaggi di applicazioni. Pertanto, il timeout di inattività scade in genere se le condizioni della rete sono tali che non vengono ricevuti messaggi di alcun tipo o se si è verificato un errore nel mittente.

L'impostazione di questo timeout impedisce al server di mantenere una sessione di sicurezza se non viene chiusa dal client. Se la sessione di sicurezza non ha ricevuto un messaggio entro l'intervallo di inattività, viene chiusa dal server. In questo modo si riduce il rischio di attacchi di tipo Denial of Service.

Quando si utilizza una sessione affidabile, è necessario rispettare due diversi timer di inattività per mantenere attiva la connessione. Se uno dei timer di inattività viene disattivato, la connessione viene eliminata.

  • Il primo timer di inattività si trova nella sessione affidabile ed è denominato InactivityTimeout. Questo timer di inattività viene attivato se entro il periodo di timeout specificato non viene ricevuto alcun messaggio, né dell'applicazione né dell'infrastruttura. Per messaggio dell'infrastruttura si intende un messaggio che non contiene dati dell'applicazione e che viene generato per uno dei protocolli nello stack dei canali, ad esempio keep-alive o acknowledgment.

  • Il secondo timer di inattività si trova nel servizio e utilizza l'impostazione ReceiveTimeout dell'associazione. Questo timer di inattività viene attivato se entro il periodo di timeout specificato non viene ricevuto alcun messaggio dell'applicazione.

Poiché la connessione viene eliminata all'attivazione di uno dei timer di inattività, l'aumento di InactivityTimeout una volta raggiunto un valore maggiore di ReceiveTimeout non produrrà alcun effetto. Poiché l'impostazione predefinita per entrambi i timeout è 10 minuti, è sempre necessario aumentarli entrambi per creare una differenza quando si utilizza una sessione affidabile.

Si applica a