dotSITE
Шаблоны проектирования Work in Murano Software. Вопросы/Ответы
новости материалы решения форумы группы настройки/о проекте
Логин/Регистрация
Логин:
Пароль:
Запомнить вас:
Регистрация
Забыли пароль?

Комментарии

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, если в конечном итоге браузеру будет отданы другие данные?


Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2010 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development