.ASHX вариант №
Файл ASHX — это веб-страница, используемая обработчиком HTTP ASP.NET для предоставления пользователю страниц, на которые есть ссылки в этом файле. Обработчик HTTP ASP.NET обрабатывает входящий запрос, ссылается на страницы из файла .ashx и отправляет скомпилированную страницу обратно в браузер пользователя. Метод обработки в основном аналогичен способу файлов ASPX с той разницей, что в этом случае страницы/документы, на которые есть ссылки, обрабатываются и отправляются обратно.
Формат файла ASHX
Файлы .ashx сохраняются в текстовом формате и содержат ссылки на другие страницы или документы, которые по запросу отправляются обратно в браузер пользователя. Их можно открыть в любом текстовом редакторе и среде разработки для разработчиков, например Xamarin Studio, Microsoft Notepad, Notepad++ и многих других. Файлы ASHX полезны в случае, если у вас есть:
- Бинарные файлы
- Динамические просмотры изображений
- Критически важные для производительности веб-страницы
- XML-файлы
- Минимум веб-страниц
Как динамически скомпилировать файл ASHX?
Следующие шаги можно использовать для добавления и компиляции файла ASHX с помощью Microsoft Visual Studio.
- добавить общий обработчик - Handler1.ashx в Visual Studio
- удалить автоматически созданный файл cs.
- снова открыть ashx, ** удалить CodeBehind=“Handler1.ashx.cs” ** добавьте код С# ниже
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
Следующий код ASHX возвращает файл изображения по запросу пользователя, когда файл ASHX вызывается в интернет-браузере.
<%@ 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;
}
}
}