ASP.NET MVC de HTTP Status (Durum) Code Değiştirme

ASP.NET MVC üzerinde HTTP Status (Durum) kodunu güncellemek isteyebiliriz. Örneğin, ziyaretçi sitemizde daha önce var olan ancak kaldırılmış bir adrese girdiğinde sadece "404 Sayfa Bulunamadı" içerikli bir sayfa döndürmemiz yetmez. Eğer durum kodu 200 ise arama motoru robotları bahsi geçen sayfanın kaldırılmadığını hala kullanılabilir olduğunu yorumlayacaktır. Bu yazımda size HTTP Status Code nasıl değiştirilir? Hangi durumlarda HTTP Status Code değiştirilmelidir? bahsetmeye çalışacağım.

 

HTTP Status Code Nedir?

Bildiğimiz üzere web, temelinde iki ana parçadan oluşur. Client ve Server. Client, Server'a istek yollar. Server da bu isteği işler ve Client'a cevap gönderir. Client'ın Server'a istek yollama işlemine kısaca Request denilir. Server'ın Client'a cevap gönderme işlemine Response denilir.

Son kullanıcı olarak biz Response'u sadece bir fotoğraf, metin, video veya tarayıcı üzerinde görülebilen herhangi bir nesne olarak görürüz. Ancak bunun arka planı da vardır. Sunucu gönderdiği yanıt için Client'a bir durum kodu bildirir. İsteğin başarıyla işlendiğini veya işlenemediğini belirten birçok HTTP durum kodu vardır. Eğer Server Client'a işlemin başarıyla gerçekleştiğini bildirmek istiyorsa durum kodu olarak 200 değerini döndürür. Eğer Server isteği kendisinden veya Client'dan dolayı işleyemez ise senaryosuna göre çeşitli durum kodları döndürebilir. HTTP Durum kodlarının tüm listesine ve detaylarına buradaki wikipedia bağlantısından ulaşabilirsiniz.

Code 404

Senaryomuz gereği örneğimizde, kaldırılmış veya hiç var olmamış bir sayfa için HTTP Status Code bilgisini 404 olarak değiştireceğiz. Öncelikle GetBlogPost isimli Action'ı kullanarak PostService servisden Blog Post (Gönderi) elde etmeye çalışalım. Eğer gönderiyi bulamazsa sayfa return Response.RedirectToAction("Oops", "Error", new { errorCode = (int)HttpStatusCode.NotFound}); ile ErrorController içindeki Oops Action'a 404 durum kodu ile yönlendirecektir.

[HttpGet]
public ActionResult GetBlogPost(int id)
{
	Post postItem = _iPostService.GetPostByID(id);
	
	if(postItem == null){
		return Response.RedirectToAction("Oops", "Error", new { errorCode = (int)HttpStatusCode.NotFound});
	}
	
	var model = new PostModel()
	{
		PostItem = postItem
	};

	return View(model);
}

 

Yukarıdaki Action eğer ki gönderi bulamazsa hata cevabının üretilmesi için aşağıdaki Action'ı kullanacaktır.


public class ErrorController : BaseController
{
	public ActionResult Oops(int errorCode)
	{
		Response.StatusCode = errorCode;
		
		//	Bu bölümde alınan hatayı Log bilgisi olarak kaydedebilirsiniz
		
		return View();
	}
}

 

SONUÇ

Projeleriniz üzerinde daha farklı tasarımlar ile Response.StatusCode değiştirebilirsiniz. Bu yazımda HTTP Status Code nasıl değiştirilir bahsetmeye çalıştım. Umarım faydalı olmuştur. Herhangi bir sorunuz, eleştiriniz veya öneriniz varsa bu gönderinin altına yorum yapabilirsiniz veya buradan bana mesaj gönderebilirsiniz.

 

Sevgiyle kalın


 Share

 Comments (0)

There are no comments for this post yet. Be the first to comment.


 Leave a Comment

You can share your questions, comments or criticisms about this post with me. Your e-mail address will not be shared with anyone.