Регистрация общего обработчика в Web.Config - PullRequest
2 голосов
/ 13 октября 2009

Я добавил общий обработчик (ashx) в свой проект, но я не вижу его регистрации в web.config, и он работает. Как так ? Я имею в виду, разве Visual Studio не должен добавлять его в качестве обработчика http в web.config? Или потому, что я не переопределяю заранее определенные обработчики, а вызываю их специально.

Ответы [ 3 ]

6 голосов
/ 13 октября 2009

Как правило, универсальный обработчик в Asp.net предназначен для поддержки небольшой задачи, такой как создание миниатюрных изображений, которые не требуют процесса Asp.net. Таким образом, вы можете назвать это как вызвать простую страницу asp.net, например "www.somesite.com/Thumbnail.ashx?filename=abc.jpg".

Кстати, если вы хотите сопоставить этот обработчик с некоторым URL, например, следующим URL.

  • www.somesite.com / Thumbnail / abc.jpg
  • www.somesite.com / Thumbnail / dog.jpg
  • www.somesite.com / Thumbnail / cat.jpg

Вам нужно использовать некоторую маршрутизацию URL, такую ​​как маршрутизация веб-формы (на основе System.Routing) для ее отображения. Таким образом, вы можете использовать следующий код, как в примере выше.

public static void RegisterRoutes(RouteCollection routes)
{
  routes.Map("Thumbnail", "Thumbnail/{filename}").To("~/Thumbnail.ashx");
}

Для получения дополнительной информации о сопоставлении веб-форм см. Использование маршрутизации с веб-формами от Phil Haack.

Однако, если вам нужно создать какой-то обработчик Http, который может обрабатывать некоторые, укажите тип файла для вашего приложения, например обработчик файла JavaScript. Вы должны создать класс, который наследуется от IHttpHandler. После этого вы должны зарегистрировать его в файле web.config для указания типа файла, который обрабатывается этим обработчиком. Пожалуйста, посмотрите на обработчики HTTP и модули HTTP в ASP.NET . Автор: Mansoor Ahmed Siddiqui

PS. Если вы используете универсальный обработчик для регистрации в файле web.config, вам нужно создать 2 файла: SomeHandler.ashx и SomeHandler.ashx.cs. Это довольно сложно для создания простого обработчика файлов. С другой стороны, вы можете создать только один файл cs, который наследуется от класса IHttpHandler для того же.

1 голос
/ 13 октября 2009

Полагаю, вы думаете о модуле HTTP вместо обработчика HTTP

HTTP-модуль перехватывает каждый HTTP-запрос к сайту и может дополнительно выполнять некоторые операции в конвейере HTTP или полностью перехватывать вызов. Модули должны быть зарегистрированы в web.config

С другой стороны, HTTPHandler работает почти так же, как страница ASPX, за исключением того, что он немного более легкий и не обрабатывает все события страницы, которые вам не нужны для чего-то, например обработчик изображений.

1 голос
/ 13 октября 2009

Обработчик - это просто другой тип файла, который вы можете просматривать. Модуль HTTP должен быть зарегистрирован в web.config, но не обязательно обработчик.

...