TsgcHTTPServer › Eventi › OnCreateSession

OnCreateSession Evento

Generato quando il server HTTP deve creare una nuova sessione, in modo che l'applicazione possa fornire un'istanza personalizzata di TIdHTTPSession.

Sintassi

property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object

Valore predefinito

—

Note

OnCreateSession viene chiamato dal server HTTP Indy sottostante quando SessionState è True e sta per essere creata una nuova sessione, in genere quando arriva una richiesta priva di un cookie di sessione valido e AutoStartSession è True. Se il gestore lascia VHTTPSession a nil, è il server stesso a creare la sessione.

Questo evento non è il modo consigliato per utilizzare una propria classe di sessione. Quando si restituisce un'istanza, il server si limita ad aggiungerla all'elenco delle sessioni; non le assegna un ID di sessione. Una sessione creata con un costruttore semplice ha quindi un ID di sessione e un cookie di sessione vuoti, e non può più essere ritrovata alla richiesta successiva. Utilizzare invece SessionClass, che crea la propria discendente e genera comunque l'ID di sessione univoco, il cookie e la gestione del timeout.

Inoltre, non chiamare SessionList.CreateUniqueSession all'interno di questo evento. Quel metodo aggiunge già la nuova sessione all'elenco, e il server la aggiunge di nuovo quando il gestore termina, così la stessa sessione finisce due volte nell'elenco. Vedere Sessioni per il quadro completo. Utilizzare OnSessionStart per reagire semplicemente quando una sessione diventa attiva.

Esempio


procedure OnCreateSession(ASender: TIdContext; var VHTTPSession: TIdHTTPSession);
begin
  // leave VHTTPSession as nil to let the server create the session
  Log('new HTTP session allocated');
end;

Torna agli Eventi