Server-Side’dan Dönen Özelleştirilmiş Hataları AJAX Call’da Yakalama

Selamlar;

Bugün ASP.NET Mvc bir projede client side tarafından bir action çağrıldığında, server side tarafta bir hata oluşur ise client tarafında ilgili hatayı detaylı bir şekilde  nasıl yakalanır onu inceleyeceğiz. Normalde ilgili hata client side tarafta default olarak “HTTP 500 error” olarak alınır.

Eğer kendi custom mesajımızı almak istiyor isek kendi custom error nesnemizi yaratmalıyız. Bunun Jquery tarafından malesef pek bir çözümü yok. Server side tarafından “HttpStatusCodeResult” dönüş tipli bir sınıf yaratılarak bizim belirlediğimiz hata mesajı döndürülebilir. Bu mesajlar belli bir hata alınmadan da gönderilebilir. Örneğin ilgili kayıt bulunamadı. Yada seçili kişinin yaşı belirlenen kriterlere uygun değil gibi. İsterseniz lafı daha fazla uzatmadan kodumuza geçelim.

return new HttpStatusCodeResult(440, “Login Süreniz Dolmuştur.”)

Öncelikle boş bir Mvc projesi yaratılır.  Aşağıda ekrana basılacak, Person sınıfına ait data model tanımlanmıştır:

Aşağıda person sınıfına ait test amaçlı çekilen data sınıfı gözükmektedir:

search

Index.cshtm: Aşağıda aranılacak kişinin adının girildiği bir “textbox” , arama “buttonu” ve dönen sonucun yazılacağı bir “texarea” tanımlanmaktadır. Arama işleminde “TestAjax()” methodu tetiklenmekete ve “findCustomer()” action’ı Ajax call ile çağrılmaktadır. “error” kısmında gelen hata kodlarına göre çeşitli operasyonlar yapılmaktadır. Buradan çıkarılacak sonuç farklı durumlar için farklı hata kodları üretilir ve herbir hata kodu için farklı processler devreye alınır. İlgili HTTP status codeları buradan bulabilirsiniz. Eğer 400’lü hata kodlarından birini alır isek bu daha çok client taraflı çözülmesi gereken bir hata olduğu ortaya çıkacaktır. Hata kodları arasında bana göre en ilginci 418 (“I’m a teapot”) olan:) Artık ne düşünülerek yazıldı ise:)

Aşağıdaki örnekte “416,418 ve 426” hata kodları yakalanmıştır. Ve herbiri için farklı işlemler yapılmıştır.

HomeController.cs/findCustomer(): Aşağıda görüldüğü gibi öncelikle ilgili dummy data çekilmiştir. Daha sonra ilgili isme göre filter işlemi yapılıp, belirli kriterlere göre  ya hata ya da sonuç geri dönülmüştür. Yapılan filter işlemleri aşama sırasına göre aşağıdaki gibi sıralanmıştır.

1-)Null kontorlü yapılmış ve kayıt bulunamaması durumunda “426” hata kodu ve ilgili hata mesajı dönülmüştür.

2-)Custom maaş filitresi yazılmış ve 45000’den az olanlar için “416” hata kodu ve ilgili hata mesajı dönülmüştür.

3-)Son filter da yaş için yazılmıştır. 18 yaşından küçükler için “418” hata kodu ve ilgili hata mesajı dönülmüştür.

Geldik bir makalenin daha sonuna. Bu makalede “$.ajax ” call işleminde server side tarafında bir hata oluştuğu zaman classic”HTTP 500 error” hatası yerine duruma göre “HttpStatusCodeResult” tipinde nasıl custom hatalar döndürülebileceğini gördük. Yeni bir makalede görüşmek üzere hoşçakalın.

Yararlanılan Kaynak: visualstudiomagazine.com

AjaxError

 

Herkes Görsün:

Bunlar da hoşunuza gidebilir...

4 Cevaplar

  1. Mustafa dedi ki:

    Ellerinize sağlık değerli yazınız için :)

  2. Ne zamandır aradığım bir konu idi çok güzel anlatmışınız teşekkürler.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir