TsgcHTTPServer › Eventi › OnCreateSession
Generato quando il server HTTP deve creare una nuova sessione, in modo che l'applicazione possa fornire un'istanza personalizzata di TIdHTTPSession.
property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object
—
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.
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;