HttpHandler(ashx) Vs aspx with Json Data

Recently I came across a situation where I was using aspx page to return Json Data to bind a flex . It  was going well (mostly all the times ) except a situation (Probality with 1 out of 10 )  where  I was getting redundent  JSON data from aspx page .
Then I  got a suggestion to try with HttpHandlers to get the JSON data instead of using aspx page .

I  tried both the ways & conclusion was like this :
Trying aspx page to return JSON data :

using System;
using System.Web;
using System.Text;
public partial class GetDataPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // Clear out the buffer
        Response.ClearHeaders();
        Response.ClearContent();
        Response.Clear();

        // Do not cache response
        Response.Cache.SetCacheability(HttpCacheability.NoCache);

        // Set the content type and encoding for JSON
        Response.ContentType = "application/json";
        Response.ContentEncoding = Encoding.UTF8;

        int page = int.Parse(Request["p"]);
        string results = DataAccess.GetResults(page);

        Response.Write(results);

        // Flush the response buffer
        Response.Flush();

        // Complete the request.  NOTE: Do not use Response.End() here,
        // because it throws a ThreadAbortException, which cannot be caught!
        HttpContext.Current.ApplicationInstance.CompleteRequest();
    }
}

In this case , you need to Clear out the Buffers , then play with cache , then Flush the response buffer and finally complete the request .

Now , Trying HttpHandler  to return JSON data :
}

using System.Text;
using System.Web;
public class GetDataHandler : IHttpHandler
{
    public bool IsReusable
    {
        get { return false; }
    }
    public void ProcessRequest (HttpContext context)
    {
        context.Response.ContentType = "application/json";
        context.Response.ContentEncoding = Encoding.UTF8;

        int page = int.Parse(context.Request["p"]);
        string results = DataAccess.GetResults(page);

        context.Response.Write(results);
    }

Conclusion :
As we  have undoubtedly concluded, there’s a lot of overhead associated with returning JSON data from an ASPX file.
If you consider the alternative, an HTTPHandler,there is a  cleaner, best-practices approach which provides the same outcome with less code, comments and risk.
So , it is always better to use httpHandler in this scenerio .

Other problem I faced in this approach was to get the session Object  in httphandler class . The Solution Is given Here :

All we need to inherit the class from IRequiresSessionState . The Example Is given below(Considering Class name as AutoComplete) :

public class AutoComplete : IHttpHandler, IRequiresSessionState { ——————– ——————–

}

150 150 Burnignorance | Where Minds Meet And Sparks Fly!