ASP.NET Timeout expired hatası (ASPNET - MSSQL Bağlantısı) Alternatif ÇÖZÜM

Asp.net (windows hosting) tabanlı web sitelerinin en çok karşılaştığı sorunlardan biri de connection timeout hatasıdır. Bu hatalar sitenizde tek bir kişi yada 5-10 kişi varken çok sıkıntı çıkarmaz. Fakat siteniz yüzlerce misafir ağırlıyor-ağırlayacaksa- eğer veritabanınızın büyüklüğü ile eşdeğer olarak sisteminizde yoğunluk meydana gelecektir. Bunun sebebi veritabanının kapatılmaması ve her defasında  yeni bağlantı açmaya çalışmasıdır. Oysa işlemimiz bittikten sonra veritabanı bağlantımızı kapatmamız o veritabanına yeni bir bağlantı talebi geldiğinde rahatça işlem yapabilme yeteneği yaratır. 

Bununla ilgili olarak ilk söyleyebileceğim şey kesinlikle bağlantılarınızı açtığınız gibi kapatmanızdır.
 

SqlConnection baglanti = new SqlConnection(connectionstringiniz);
baglanti.Open();
.
.
.
baglanti.Close();

İşlemi bu şekilde kapatırsınız. Fakat olur da bu kod bloğu içerisinde bir hata alırsanız sisteminiz orada keseceği için bağlantınız kapatılmayacaktır. Bu sorunu çözebilmek için try catch bloğu kullanmak işimizi kolaylaştıracaktır.
 

try
{
SqlConnection baglanti = new SqlConnection(connectionstringiniz);
baglanti.Open();
.
.
.
baglanti.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.message);
}
finally
{
baglanti.Close();
}

Bu şekilde sistemimizin durumu her ne olursa olsun bu kod bloğuyla işimiz bittiğinde bağlantıyı kapatmış olacağız. Son olarak bu konu ile ilgili en verimli yol olan using kullanımına geleceğim.
 

using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
.
.
.
}

Bu şekilde işlemi yaptığımız zaman her koşulda bağlantı otomatik olarak kapanacaktır. Burada using kullanımı sadece ilgili blog için bağlantıyı kullan anlamına gelir ve blokta işlem bitince bağlantı kapanır. Kodda da gördüğünüz gibi kapatmak için herhangi bir kod yazmadık.

3939

(0) Yorum

Yorumlar