Vad är en ASHX fil?
En ASHX-fil är en webbsida som används av ASP.NET HTTP-hanteraren för att betjäna användaren med sidorna som det refereras till i denna fil. ASP.NET HTTP-hanteraren bearbetar den inkommande begäran, refererar till sidorna från .ashx-filen och skickar tillbaka den kompilerade sidan till användarens webbläsare. Metoden för bearbetning liknar för det mesta den för ASPX-filer med skillnaden att i detta fall bearbetas de refererade sidorna/dokumenten och skickas tillbaka.
ASHX filformat
.ashx-filerna sparas i vanlig textfilformat och innehåller referenser till andra sidor eller dokument som skickas tillbaka till användarens webbläsare på begäran. Dessa kan öppnas i vilken textredigerare och utvecklare som helst som Xamarin Studio, Microsoft Notepad, Notepad++ och många fler. ASHX-filerna är användbara om du har:
- Binära filer
- Dynamiska bildvyer
- Prestandakritiska webbsidor
- XML-filer
- Minimalt med webbsidor
Hur man dynamiskt kompilerar en ASHX-fil?
Följande steg kan användas för att lägga till och kompilera en ASHX-fil med Microsoft Visual Studio.
- lägg till en generisk hanterare - Handler1.ashx i visual studio
- ta bort cs-filen som skapades automatiskt. *öppna ashx igen, ** ta bort CodeBehind=“Handler1.ashx.cs” ** lägg till c#-kod nedan
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 Exempel
Följande ASHX-kod returnerar bildfilen till användarens begäran när ASHX-filen anropas i webbläsaren.
<%@ 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;
}
}
}