Geliştirme kutumda (Vista/IIS7 üzerinde .NET 2.0) bir ASP.NET web sitesi çalıştırıyorum. global.asax.cs'deki Session_Start yöntemi, her aramayı bir dosyaya (log4net) kaydeder. Session_End yöntemi ayrıca her çağrıyı günlüğe kaydeder.Aynı oturum kimliğine sahip çok sayıda Session_Start
InProc oturum durumunu kullanıyorum ve oturum zaman aşımını 5 dakikaya ayarlayın (20 dakika beklemekten kaçınmak için).
Web sitesine girdim, Session_End günlüğünü gördüğümde 5 dakika bekleyin. Sonra web sitesi F5. Tarayıcılar hala oturum çerezine sahiptir ve sunucuya gönderir. Session_Start çağrılır ve aynı oturum kimliği kullanılarak yeni bir oturum oluşturulur (btw: Veriyi veritabanında saklamak için kullanıldığı için aynı oturum kimliğine ihtiyacım var).
Sonuç: Daha önce sona eren bir oturumda F5'e her vurduğumda, Session_Start yöntemi çağrılır, istek yürütülür ve Session_End yöntemi hemen çağrılır.
Farklı bir tarayıcı açtığımda, Session_Start yöntemi yalnızca bir kez çağrılır. Sonra 5 dakika sonra Session_End F5, Session_Start/request/Session_End dizisinin yürütülmesine neden olur.
web.config ilgili bölümü:
<system.web>
<compilation debug="true" />
<sessionState timeout="2" regenerateExpiredSessionId="false" />
</system.web>
Aynı sorun hakkında yardıma ihtiyacım yok, ancak oturum ile uğraşmadığım sitelerde. Tamamen rastgele sitede Session_Start bir DB işlemi bir oturum kimliği ile bir kullanıcı için günde yüzlerce kez yapacak. Uyarı yok, rastgele siteler etkilendi ve cevap yok. –
[bu bağlantı] 'ya bakın (http://stackoverflow.com/a/11375003/779408). Orada gerçek bir çözüm var. – breceivemail