Search code examples
c#asp.netiisiis-7httphandler

How to configure an Http Handler in IIS 7?


Here's what I want to do:

  1. I've created a class library project and this has a class implementing the IHttpHandler interface. Let's call this class ZipHandler. Let's say the namespace is Zip.
  2. I want that whenever any Http request comes for a zip file, my ZipHandler should handle it, regardless of whether the request is to an Asp.Net application or a normal virtual directory.

Queries:

  1. Is it possible (it should be given the hype about integrated pipeline etc. in IIS 7)?
  2. How to do it?

Solution

  • Here's the info I was looking for:

    If you want to register your custom HTTP handler at the IIS 7 Web server level, you must compile your HTTP handler into a strongly-named assembly and deploy it to the Global Assembly Cache (GAC) because IIS 7 only picks up assemblies deployed to the GAC. It does not pick up assemblies deployed anywhere else such as the bin directory of a particular Web site or Web application.

    We're aiming to add this handler at web server level. After deploying the handler in GAC, open the web.config available at the web server level (right click and browse -> open the web.config show here) and put something like this in the handler section (the fully qualified name of the class):

    <handlers>
    <add name="Ch8_RssHandler" path="*.rss" verb="*"
    type="ProIIS7AspNetIntegProgCh8.RssHandler, Version=1.0.0.0, Culture=neutral,
    PublicKeyToken=369d834a77" preCondition="integratedMode" />
    </handlers>
    

    Note: The information snippets (1st para and code sample) are taken from the book:
    Professional IIS 7 and ASP.Net Integrated Programming by Dr. Shahram Khosravi

    Seems like a very nice book :)