Web Servislerinde Session Kullanımı

Bir ASP.NET uygulamasında web servisiniz içerisinden Session’a erişmek istediğiniz zaman “Object reference not set to an instance of an object” hatasını alacaksınızdır.

Örnek olarak aşağıdaki gibi bir servis metodumuz olsun.

[WebMethod]
public string SayHello()
{
    if(HttpContext.Current.Session["message"] != null)
       return HttpContext.Current.Session["message"];
    return "";
}

Uygulamamızın herhangi bir yerinde message isminde bir Session’ın oluşturulduğunu varsayalım. null kontrolü yapmamıza rağmen if bloğunun başında “Object reference not set to an instance of an object” hatasını fırlatacaktır. HttpContext null olmamasına rağmen HttpContext’in Session özelliği null olarak gelmektedir.

Sorunu çözebilmek için WebMethod niteliğimizin (attribute) EnableSession özelliğini true olarak ayarlamamız gerekmektedir.

[WebMethod(EnableSession = true)]
public string SayHello()
{
    if(HttpContext.Current.Session["message"] != null)
       return HttpContext.Current.Session["message"];
    return "";
}

Kodumuzu bu şekilde düzenleyip çalıştırdığımızda sorunsuz bir şekilde çalışacaktır.