Hvad er en ASHX fil?
En ASHX-fil er en webside, der bruges af ASP.NET HTTP-handleren til at betjene brugeren med de sider, der henvises til i denne fil. ASP.NET HTTP-handleren behandler den indkommende anmodning, refererer til siderne fra .ashx-filen og sender den kompilerede side tilbage til brugerens browser. Behandlingsmetoden ligner for det meste ASPX-filer med den forskel, at i dette tilfælde behandles de refererede sider/dokumenter og sendes tilbage.
ASHX filformat
.ashx-filerne gemmes i almindeligt tekstfilformat og indeholder referencer til andre sider eller dokumenter, der sendes tilbage til brugerens browser efter anmodning. Disse kan åbnes i enhver teksteditor og udvikler-IDE’er som Xamarin Studio, Microsoft Notepad, Notepad++ og mange flere. ASHX-filerne er nyttige, hvis du har:
- Binære filer
- Dynamiske billedvisninger
- Præstationskritiske websider
- XML-filer
- Minimale websider
Hvordan kompilerer man en ASHX-fil dynamisk?
Følgende trin kan bruges til at tilføje og kompilere en ASHX-fil ved hjælp af Microsoft Visual Studio.
- tilføje en generisk handler - Handler1.ashx i visual studio
- slet cs-filen, der blev oprettet automatisk.
- åben ashx igen, ** fjern CodeBehind=Handler1.ashx.cs ** tilføje c# kode nedenfor
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World2");
}
public bool IsReusable
{
get
{
return false;
}
}
}
ASHX Eksempel
Følgende ASHX-kode returnerer billedfilen til brugerens anmodning, når ASHX-filen kaldes i internetbrowseren.
<%@ WebHandler Language="C#" Class="QueryStringHandler" %>
using System;
using System.Web;
public class QueryStringHandler : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
HttpResponse r = context.Response;
r.ContentType = "image/png";
string file = context.Request.QueryString["file"];
if (file == "Arrow")
{
r.WriteFile("Arrow.gif");
}
else
{
r.WriteFile("Image.gif");
}
}
public bool IsReusable
{
get
{
return false;
}
}
}