TsgcHTTPServer › Olaylar › OnCreateSession
HTTP sunucusunun yeni bir oturum oluşturması gerektiğinde tetiklenir, böylece uygulama özel bir TIdHTTPSession örneği sağlayabilir.
property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object
—
OnCreateSession, SessionState True olduğunda ve yeni bir oturum oluşturulmak üzereyken, tipik olarak geçerli bir oturum çerezi olmayan bir istek geldiğinde ve AutoStartSession True olduğunda, alttaki Indy HTTP sunucusu tarafından çağrılır. İşleyici VHTTPSession'ı nil olarak bırakırsa, sunucu oturumu kendisi oluşturur.
Bu olay, kendi oturum sınıfınızı kullanmanın önerilen yolu değildir. Bir örnek döndürdüğünüzde, sunucu onu yalnızca oturum listesine ekler; ona bir oturum kimliği atamaz. Bu nedenle düz bir yapıcı ile oluşturulan bir oturumun boş bir oturum kimliği ve boş bir oturum çerezi vardır ve bir sonraki istekte bir daha asla bulunamaz. Bunun yerine, alt sınıfınızı oluşturan ve yine de sizin için benzersiz oturum kimliğini, çerezi ve zaman aşımı işlemesini üreten SessionClass'ı kullanın.
Ayrıca, bu olay içinde SessionList.CreateUniqueSession'ı çağırmayın. Bu yöntem yeni oturumu zaten listeye ekler ve işleyiciniz döndüğünde sunucu onu tekrar ekler, bu nedenle aynı oturum listede iki kez sonuçlanır. Tüm resmi görmek için Sessions konusuna bakın. Bir oturum etkin hale geldiğinde basitçe tepki vermek için OnSessionStart kullanın.
procedure OnCreateSession(ASender: TIdContext; var VHTTPSession: TIdHTTPSession);
begin
// VHTTPSession'ı nil bırakın, böylece sunucu oturumu oluşturabilsin
Log('new HTTP session allocated');
end;