Web Service ve Generic Handler Dosyalarında Session Kullanımı

Bir çok kez ihtiyacım olan ve her seferinde de unuttuğum bir konuyu buraya yazayım dedim, böylece hem elimin altında olsun hem de başka arayanlar olursa yardımı dokunsun istedim; Web Service (.asmx) ve Generic Handler (.ashx) dosyalarında Session kullanımı.

Konuya dönecek olursak, Web Service`lerde Session kullanabilmek için yapmamız gerekenler şöyle;

Yeni bir Web Service dosyası oluşturduğunuzda, dosyanızda aşağıdaki gibi “Hello World” adında hazır bir fonksiyon yer alır.

<WebMethod()> _
Public Function HelloWorld() As String
Return “Hello World”
End Function

Bu fonksiyon içerisinde Session kullanabilmek için tek yapmanız gereken şöyle; “<WebMethod()>_” yazan yeri “<WebMethod(EnableSession:=True)> _” veya “<WebMethod(True)> _” şeklinde değiştirmeniz yeterli olacaktır. Bu değişikliği Web Service dosyanızda yer alan ve içerisinde Session kullanmak istediğiniz tüm fonksiyonlara uygulamanız gerekli.

Generic Handler dosyalarında ise durum biraz daha farklı. Burada fonksiyonlara değil tüm Class bazında Session kullanımını aktif yapıyoruz. O da şu şekilde yapılıyor;

Yeni bir Generic Handler dosyası oluşturduğunuzda, dosyanız aşağıdaki gibi bir yapıya sahip olur;

Public Class Handler : Implements IHttpHandler

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.ContentType = “text/plain”
context.Response.Write(“Hello World”)
End Sub

Generic Handler dosyanızda Session kullanabilmek için yapmanız gereken ise şöyle; “Public Class Handler : Implements IHttpHandler” yazan yeri “Public Class Handler : Implements IHttpHandler, IRequiresSessionState” olarak değiştirerek IRequiresSessionState`i dosyanıza implement etmeniz yeterli olacaktır.

Bu şekilde Web Service ve Generic Handler dosyalarımızda Session kullanımını etkinleştirmiş olduk, umarım yardımı dokunur.