|
|
ASP.NET WebHandlers, или что такое .ashx файлы
Мало кто знает, что Web Handlers можно использовать без прописывания их в Web.config для определенных типов файлов, а путем прямого обращения через URL.Этому поможет файл описания с расширением .ashx.
Файл описания с расширением .ashx, обрабатывается ASP.NET и должен содержать специальную директиву <%@ WebHandler %>.
Второй атрибут, который должен быть указан в директиве – это полное имя класса, реализующего интерфейс IHttpHandler. Опционально можно указать и язык.
Итак, каждый .ashx файл должен начинаться со следующей строчки: <%@ WebHandler Language=”C#” Class=”MyWeb.MyHttpHandler” %> Класс, реализующий IHttpHandler может находиться как в отдельной сборке (codebehind), так и напрямую в .ashx файле. Например: <%@ WebHandler Language=”C#” Class=”MyWeb.MyHttpHandler” %>
using System;
using System.Web;
namespace MyWeb {
public class MyHttpHandler : IHttpHandler {
bool IHttpHandler.IsReusable {
get { return true; }
}
void IHttpHandler.ProcessRequest(HttpContext context) {
// handler code
}
}
}
Как видно из примера, все довольно просто. Заметьте, что даже в этом случае атрибут Class остается обязательным и должен содержать полное имя класса, включая Namespace.
Чем удобны .ashx файлы? Не нужно вносить изменения в Web.config, достаточно создать .ashx файл и обращаться к нему. Ещё, например, если сайт хранит картинки в базе, можно давать на них ссылку вида: http://mysite.com/image.ashx?id=1. Многие используют для этого обычные .aspx страницы, но нужно ли такое количество лишних действий, включая создание объекта Page, если в конечном итоге браузеру будет отданы другие данные?
|