Создание специального обработчика HTTP

Если Вы хотите работать на более низком уровне, чем модель Web-формы, чтобы поддерживать специализированный вид обработки, можете реализовать свой собственный обработчик HTTP.

Для создания специального обработчика HTTP нужно просто создать класс, реализующий интерфейс IHttpHandler. Вы можете поместить этот класс в каталог App_Code или скомпилировать его как часть автономной DLL-библиотеки сборки (другими словами, как отдельный проект библиотеки классов). Если вы используете второй подход, вам нужно будет добавить ссылку на проект (о чем уже упоминалось в этой главе). Этот шаг сообщит Visual Studio о том, что нужно скопировать скомпилированную сборку в каталог Bin.

Интерфейс IHttpHandler требует реализации классом двух членов, которые перечислены в табл. 5.4.

Таблица 5.4. Члены IHttpHandler

Член Описание
processRequest() ASP.NET вызывает этот метод при получении запроса. В нем обработчики HTTP выполняют всю обработку. Вы можете обратиться к внутренним объектам ASP.NET (таким как Request, Response и Server) посредством объекта HttpContext, передаваемого этому методу.

IsReusable После того как метод ProcessRequest() завершит свою работу, ASP.NET проверит это свойство, чтобы узнать, может ли повторно использоваться данный экземпляр обработчика HTTP. Если вы возвращаете true, объект обработчика HTTP может повторно использоваться для другого запроса такого же типа. Если вы возвращаете false, объект обработчик HTTP будет отброшен.

Следующий код демонстрирует простейший из возможных обработчиков HTTP, который вы можете создать. Он просто возвращает фиксированный блок HTML с сообщением.

using System;
using System.Web;

namespace HttpExtensions
{
  public class SimpleHandler : IHttpHandler
  {
    public void ProcessRequest(System.Web.HttpContext context)
    {
      HttpResponse response = context.Response;
      response.Write("<html><body><h1>Rendered by the SimpleHandler");
      response.Write("</h1></body></html>");
    }
    public bool IsReusable
    {
      get { return true; }
    }
  }
}

предыдущая    следующая страница   оглавление

243

Hosted by uCoz