На заметку! Если вы создаете это расширение как проект библиотеки классов, вам нужно будет добавить ссылку на сборку System.Web.dll, содержащую большое количество классов ASP.NET. Без этой ссылки вы не сможете использовать такие типы, как IHttpHandler и HttpContext. (Чтобы добавить ссылку, щелкните правой кнопкой мыши на имени проекта в окне Solution Explorer, выберите в контекстном меню команду Add Reference (Добавить ссылку) и найдите сборку в списке на вкладке .NET.)
После того как вы создадите свой класс обработчика HTTP и сделаете его доступным вашему Web-приложению (поместив его в каталог App_Code или добавив ссылку), вы сможете использовать это расширение. Следующим действием будет изменение файла web.config для Web-приложения таким образом, чтобы оно зарегистрировало ваш обработчик HTTP. Ниже показан пример:
<httpHandlers>
<add verb="*" path="test.simple"
type="HttpExtensions.SimpleHandler,HttpExtensions" />
</httpHandlers>
При регистрации обработчика HTTP, вы определяете три важные детали. Атрибут verb показывает, является ли запрос HTTP-запросом POST или GET (для всех запросов указывается *). Атрибут path показывает расширение файла, который будет вызывать обработчик HTTP. В этом примере раздел web.config связывает класс SimpleHandler с именем файла test.simple. Наконец, атрибут type определяет класс обработчика HTTP. Это обозначение состоит из двух частей. Первая часть представляет полностью определенное имя класса (в данном примере HttpExtensions.SimpleHandler). За этой частью ставится запятая и имя DLL сборки, содержащей данный класс (в этом примере HttpExtensions.dll). Обратите внимание на то, что расширение .dll подразумевается всегда, и вам не нужно включать его в имя.
Если вы используете подход App_Code вместо отдельно скомпилированной сборки, вы можете вообще опустить имя DLL, поскольку ASP.NET генерирует его автоматически.
<httpHandlers>
<add verb="*" path="test.simple"
type="HttpExtensions.SimpleHandler" />
</httpHandlers>
Visual Studio не позволяет запускать обработчик HTTP напрямую. Вместо этого вам придется запустить Web-проект, а затем ввести URL-адрес, включающий test.simple. Например, если URL-адресом вашего Web-приложения является http://localhost:19209/Chapter05 на локальном сервере, то вам нужно будет изменить его на http://localhost:19209/Chapter05/test.simple. Вы увидите HTML-страницу, показанную на рис. 5.12.
Специальный обработчик HTTP не подходит для использования при развертывании вашего Web-приложения на Web-сервере IIS. Дело в том, что по умолчанию расширение .simple обрабатывается самой IIS, а не ASP.NET. IIS просто проверяет файл с этим именем, и если он существует, IIS возвращает необработанные данные из этого файла. Если файла нет, IIS возвращает сообщение об ошибке. Чтобы изменить указанное поведение, вам нужно добавить файловое сопоставление IIS для вашего приложения, которое явно сообщит IIS, о том, что все запросы .simple должны перенаправляться ASP.NET. Этот процесс будет рассмотрен в главе 18.
предыдущая следующая страница оглавление
244