16 Temmuz 2011 Cumartesi

Http Requestlerinin Dinlenmesi (Page sınıfından kalıtılmayan sınıflarda)

HTTP requestlerini dinleyebildiğimiz ve onlarla ilgili işlemler yapabildiğimiz bazı metotlar, property'ler, kısaca bazı üyeler vardır. Örnek vermek gerekirse, Server.MapPath ile uygulamanın, bulunduğu serverdaki çalıştığı dosyanın tam yolunu verir. Request.QueryString diyerek, sayfaya querystring ile gelen parametreleri alırız, veya Request.Cookies diyerek, daha önce tanımlanmış cookie değerlerine erişiriz. Bunları herhangi bir sayfada yazarken hiçbir sorun olmayız. Fakat, projenize bir class ekleyip, o class içinde herhangi bir yerde bunları çağırmayı deneyin.

Denediğiniz vakit, göreceksiniz ki, Intellisense yardımcı olmuyor. Ama herhangi bir sayfadan yazdığınızda eriştiğinizi göreceksiniz. Bunun nedeni, bu üyelerin Page sınıfında bulunması. Dolayısıyla sayfalarımız da Page sınıfından kalıtıldığından biz bu üyelere erişebiliyorduk. Sınıfımız Page sınıfından kalıtılmadığı için de dolayısıyla erişemiyoruz. 

İşte bu sorunu ortadan kaldırmak için, Http requestlerine ulaşmamızı sağlayan HttpContext sınıfından Current property'si sayesinde, bize gelen Http Requestlerini dinleyebiliyoruz.

int id = Convert.ToInt32(HttpContext.Current.Request.QueryString["I_ID"]);
string username = HttpContext.Current.Request.Cookies["UserName"].ToString();
XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~\\data.xml"));

0 yorum: