Count Image Requests from a Web Server using ASP.NET


This article explains you how we can count Image request from a Web server using C# and ASP.NET.

In an ASP.NET application, global.asax is the place where we can see each request for the application by using Application_BeginRequest event. What if we want to keep track of image requests?

Web server maintains a server log file where we can see each and every request to web server. But if we want to make a web interface to see the requests then we need to do some extra work.

As we know there aspnet_isapi dll, which takes care of each request. By default, we can't see image file entries in IIS -> home directory -> configuration -> mapping so to collect those type of requests we need to add that mapping to IIS -> home directory -> configuration -> mapping.

After successfully addition we can make our httphandler to handle image requests processed by aspnet_isapi.dll. We can make class inherited by IHttpHandler class where we can collect those image requests.

Example:

using System;
using System.Web;
public class JpgHandler : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
string FileName = context.Server.MapPath(context.Request.FilePath);
if (context.Request.ServerVariables["HTTP_REFERER"] == null)
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("/no.jpg");
}
else
{
if (context.Request.ServerVariables["HTTP_REFERER"].ToLower().IndexOf("dotnetheaven.com") > 0 )
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile(FileName);
}
else
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("/no.jpg");
}
}
}

public bool IsReusable
{
get
{ return true; }
}
}

After making this class we need to call it in web application. To call in web application we need to add this in web.config:

<httpHandlers>
<
add verb="*" path="*.jpg" type="JpgHandler, MyDll"/>
</
httpHandlers>

Now your application is ready to collect image requests. In above config settings, JpgHandler is class name and MyDll is the DLL name.

Up Next
    Ebook Download
    View all
    Learn
    View all