Httpcontext İle Url İşlemleri, Normalde Asp.Net web forms projelerimizde aspx sayfaların code behind’inda çalıştığımızda Page sınıfından kalıtım aldığı için Request diyerek client’dan istek alınabilir veya response diyerek Page sınıfından kalıtım yoluyla gelen bu özellikleri kullanabiliriz.
Httpcontext İle Url İşlemlerini Gerçekleştirme
Normalde Asp.Net web forms projelerimizde aspx sayfaların code behind’inda çalıştığımızda Page sınıfından kalıtım aldığı için Request diyerek client’dan istek alınabilir veya response diyerek Page sınıfından kalıtım yoluyla gelen bu özellikleri kullanabiliriz. ama kendi classlarımız içerisinde bu tür istekleri nasıl gerçekleştirebileceğimizi bu makalede görmüş olacağız.
Eğer kendi özel classımızda client’dan istekde bulunmamız gereken durumlar olursa bu ihtiyacı gidermek için HttpContext classını kullanabiliriz aşağıdaki kod parçalarından anlaşılabileceği HttpContext class’ından faydalanıp kullanıcının url, tarayıcı v.b bilgilerine bu sınıf aracılıyığla kolayca ulaşabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | using System; using System.Web; public class Sayfa : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //root dizini verir. Response.Write("root dizin : " + HttpContext.Current.Request.Url.Host); //sonraki dizinler Response.Write("sonraki dizin : " + HttpContext.Current.Request.Url.AbsolutePath); //Full adres satırı Response.Write("Full adres : " + HttpContext.Current.Request.Url.AbsoluteUri); //Portlu Full adres satırı Response.Write("Portlu Full adres : " + HttpContext.Current.Request.Url.OriginalString); //Portu Response.Write("Portu : " + HttpContext.Current.Request.Url.Port); //Query Response.Write("Query :" + HttpContext.Current.Request.Url.Query); //http Response.Write("http : " + HttpContext.Current.Request.Url.Scheme); } } |
Üstteki kodlardada görülebileceği üzere ben HttpContext sınıfını Page Sınıfından katılım alan Sayfa adından classımda ve Page_Load yani sayfanın yüklenme olayında kullanmaktayım normalde burada direk Request.Url gibi bir yazım ile kullanabilirdim ama daha öncede anlattığım gibi Kendi özel class’ımızda Response ve Request özelliklerine ulaşamayacağımızda HttpContext sınıfını kullanmanız gerekmektedir.
public static string GetRazorViewAsString(object model, string filePath)
{
var st = new StringWriter();
var context = new HttpContextWrapper(HttpContext.Current);
var routeData = new RouteData();
var controllerContext = new ControllerContext(new RequestContext(context, routeData), new UyeController());
var razor = new RazorView(controllerContext, filePath, null, false, null);
razor.Render(new ViewContext(controllerContext, razor, new ViewDataDictionary(model), new TempDataDictionary(), st), st);
return st.ToString();
}
var context = new HttpContextWrapper(HttpContext.Current); bu satırda null exception verıyor bunun sebebı ne olabılır ?
Metodu tam olarak nerede çalıştırdığınızda önemli herhangi bir httpcontext üretilmeden erişmeye çalışıyorsanız verebilir bu hatayı.