En ting som rigtig mange stadigvæk ikke er klar over, er muligheden for at extende Windows web serveren, Internet Information Services. Dette emne er noget som Mads Kristensen bestemt har ydet sit for at få udbredt, men om det har nået ud til jer alle er svært at sige. Mads har gentagne gange fortalt mig, at mange af de udviklere han møder simpelthen ikke er klar over denne lækre men efterhånden gamle feature i IIS 7.x.
HttpHandlers…
Har filendelsen .ashx, bruges udelukkende til at håndtere den response der kommer tilbage fra IISn, udfra en bestemt filtype.
Er smarte hvis du f.eks laver UrlRewriting, indholds-manipulation eller andet hvor du gerne vil have fingrene i responsen før klienten modtager det.
Er nemme at bygge, du skal faktik bare have en klasse der arver fra IHttpHandler interfacet.
Behøver ikke registreres på webserveren.
using System;
using System.Web;
using System.IO;
public class TxtHandler : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
StreamReader reader = new StreamReader
(context.Server.MapPath(context.Request.FilePath));
String cardInfo = reader.ReadToEnd();
context.Response.Write(cardInfo);
}
}
Ovenstående er en HttpHandler (.ashx) og det eneste du mangler nu er at registrere den. Det kan du gøre på enten server, website eller applikations niveau.
Hvis du vil gøre det på IISn skal du finde det punkt der hedder “Handler mappings”. Her tilføjer du stien og den ønskede type der skal tage sig af responsen.

Du kan også gøre det på selve applikationen, og det kræver såmænd bare tilføjelse af en handler i din webconfig fil.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<system.webServer>
<handlers>
<add
name="txtHandler"
path="*.txt"
verb="*"
type="TxtHandler"
resourceType="Unspecified"
preCondition="integratedMode"
/>
</handlers>
</system.webServer>
</configuration>
Når nogen kalder en .txt fil på dit website vil den ovenstående HttpHandler træde i kræft og du vil have fuld adgang over det pågældende request.
Bemærk at pipeline mode på IISn skal være sat til Intergrated.
Som sagt er Mads Kristensen en haj til at lave de her HttpHandlers, så tjek hele hans bibliotek ud :)
God fornøjelse.