Web uygulamarında tüm kullanıcıların ortak kullandıkları verileri tutmak için Application nesnesi kullanılır. Unutulmamalı ki Application State'ler web farm veya web gardenlarda paylaşılamaz. Application State hakkında verilebilecek en basit ve en klasik örnek ziyaretçi sayısını hesaplamaktır.
Uygulama başladığında Application_Start event'i oluşur ve bu event Global.asax'ta handle edilir. Burada Counter adlı elemanımıza 0 değerini atıyoruz. Websayfamıza giren her kullanıcı için bir session başlatarak Session_Start eventinde bu elemanımıza 1 ekliyoruz. Sessionlar sonlandığında ise Session_End eventinde elemanımızı 1 eksiltiyoruz. Tüm bunları Global.asax dosyamızda yaptıktan sonra Default.aspx sayfamızda ise Labelımıza elemanımızı yazdırıyoruz.
Global.asax
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
Application["Counter"] = 0;
}
void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 1;
Application.Lock();
Application["Counter"] = (int)Application["Counter"] + 1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
Application.Lock();
Application["Counter"] = (int)Application["Counter"] - 1;
Application.UnLock();
}
</script>
Default.aspx
protected void Page_Load(object sender, EventArgs e)
{
Durum.Text = "Şu an websayfamzda " + Application["Counter"] + " kişi online durumda..";
}
Uygulamamızda session nesnesini sonlandırmak için dilediğimiz evente aşağıdaki kodu eklememiz yeterli. Mesela bir LinkButton..
Session.Abandon();