Реклама:

</systern.wet» </configuration

Эти два метода различаются главным образом упаковкой. Модули компилируются в сборку, могут быть зарегистрированы в GAC (Global Assembly Cache), их легко использовать в приложениях (например, путем регистрации на уровне машины или сайта). Файл global.asax всегда является локальным для приложения, так что в случае многократного использования кода вам придется копировать этот файл из одного приложения в другое. .

/Г*\ ВНИМАНИЕ! Локально зарегистрированные модули и код файла global.asax запускаются ^-^ после запуска встроенных модулей.

Обработчики

За создание ответа HTTP, пересылаемого назад клиенту, отвечают обработчики. Обработчики — это классы, реализующие интерфейс IHttpHandler. Данный интерфейс задает метод Process Request, который вызывается методом HttpRuntime и использует текущий HttpContext в качестве параметра. Для генерирования выходных данных внутри метода ProcessRequest используется объект Response из контекста.

Наиболее распространенным обработчиком является класс System.Web.UI.Page, из которого порождаются страницы .aspx и который также реализует интерфейс IHttp-Handler. Web-службы, например, используют файл с расширением .asmx, который преобразуется в другой обработчик, выводящий данные в формате XML, а не в формате HTML.

Далее приведен пример обработчика, который использует два числа в качестве строковых параметров запроса, складывает их и возвращает результат в виде фрагмента XML-кола.

Пример обработчика HTTP

class XmlHandler : IHttpHandler <

void ProcessRequest(HttpContext ctx) {

int sum = Int32.Parse(ctx.Request.QueryString["x"]); sum += Int32.Parse(ctx,Request.OueryString["y"]); ctx.Response.ContentType = "text/xml";

XmlTextWriter w = new XmlTextWriter(ctx.Response.Output); w.WriteElementSt ring("Sufn", sum.ToString()); w.Close();

}

public boo) IsReusable { get { return false; ) )

>

Упакуйте данный код в отдельную сборку и зарегистрируйте обработчик в файле web.config. Вам нужно указать, к какому URL принадлежит обработчик, для чего можно также использовать групповой символ *.xml.

<configuration> <system.web> <httpHandlers> <add verb="*" path="Add.xml" type='"XMLHandler, MyHandler" />

</httpHandlers> </system.web> </configuration>

Теперь вы можете вызвать этот обработчик следующим образом:

http ://se rve r/app/Add.xml?x=5&y=5

ПРИМЕЧАНИЕ Это лишь половина дела. Чтобы в IIS запросы для Add.xml трассировались во время исполнения ASP.NET, нужно добавить сценарий script mapping. Для этого откройте в IIS параметры конфигурации приложения для соответствующего виртуального каталога и добавьте сценарий преобразования для файла с расширением .xml, который указывает на ASP.NET ISAPI DLL.

Инспектирование конвейера

Воспользовавшись кое-какими хитростями, вы, наверняка, сможете определить, какие модули, в каких сборках и на какое событие конвейера подписаны. Приведенный далее код хранится в файле с расширением .ashx, которое является специальным расширением для обработчиков, заданным в сценариях script mapping IIS во время установки .NET Framework 2.0. Чтобы выяснить, в каких сборках находятся модули, передайте строковый параметр запроса ?asm-true.


⇐ Предыдущая страница| |Следующая страница ⇒