![]() |
|
Модераторы: gambit |
![]()
|
|
| DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Переопределяю стандартный обработчик запросов IHttpHandler, что-то в нем делаю и мне теперь требуется вызвать стандартный обработчик запросов, как это сделать и возможно ли?
-------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
как? наследуешь интерфейс IHttpHandler в своем классе-обработчике? Тогда нельзя - интерфейс не содержит реализации. Если ты от Page например создаешь свего наследника, тогда через
а вообще непонятно зачем тебе это. Может задачу обрисуешь? Это сообщение отредактировал(а) tol05 - 28.8.2007, 09:40 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| DimaSiK |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Мне нужно сделать так, чтобы по вызову страниц *.aspx выполнялись некоторые действия, причем автоматически. Для этого я регистрирую обработчик в WebConfig и переопределяю IhttpHandler для вызова в нем нужной процедуры. После регистрации данных мне нужно продолжить обработку запроса, выдать страницу, для этого я думаю, что нужно отдать управление оригинальному обработчику IhttpHandler, как это сделать? -------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
||||
|
|||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
тогда тебе не так нужно делать. Обработчик твой - просто переопределяет обработку запроса, а тебе нужно оставить стандартную обработку запроса.
Для того, чтобы до (или после) обработки запроса IHttpHandler-ом делать какие-то движения, предназначены модули (IHttpModule). 1. Делаешь свой модуль, регистрируешь его в конфиге, в секции <httpModules> 2. В Init() модуля подписываешся на событие Application.BeginRequest (например методом MyBeginRequest() ) 3. В этом MyBeginRequest() выполняешь свои телодвижения. 4. Дальше модуль дохнет и запрос идет на обработку стандартному обработчику... -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Вот как раз до этого и докапался сейчас. Буду пробывать, что получится напишу, сенкс -------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
| DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Сделал, работает. Однако не нравится то, что я не могу задать расширение страниц которые этот мудуль будет обрабатывать, это приходиться делать в ручную в самой реализации модулю=(. Можно ли как-нибудь автоматизировать этот процесс, а то так я выясняю расширение страница и если оно aspx, то выполняю нужные действия.
Это сообщение отредактировал(а) DimaSiK - 28.8.2007, 12:31 -------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
ИМХО нельзя. Но какая в этом проблема? Трудно расширение узнавать?
Все равно, даже если б было бы возможно все равно ASP.NET тратила бы определенное время и ресурсы на анализ, вызывала бы какой-то код... Ну так пропиши его сам. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| DimaSiK |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Я переопределил HTTP модуль в методе Init перехватываю событие BeginRequest. В функции, которыя обрабатывает данное событие реализован следющий код
-------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
||||
|
|||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Нет. Объект Session формируется гораздо позже события BeginRequest. Обсуждение этого и вариант юзания смотри здесь
-------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
И все же, как сделать так, чтобы некоторый коды выполнялся на каждой странице и его не требовалось бы прописывать на каждой странице, имеется ввиду, что раз прописываются настройки в WebConfig и все. Требуется так же возможность работы с сессией, с кешем не хочу, нужно переделывать логику работы скриптов. Неужели не HTTPModule и HTTHandler не позволяют этого делать?
-------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Позволяют. Ты страницы пишешь как наследники от класса Page.
Создай класс - наследник Page (или даже напрямую от IHttpНandler), в нем переопредели событие, допустим PreInit. Может даже конструктор страницы... В обработчике пиши свой код. А все страницы создавай как наследники от этого класса. Если был конструктор переопределен - от твой код будет автоматом выполняться. Иначе - вызывай свой обработчик базового класса явно. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Ну ты написал, я новичек пока в ASP не все понял -------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
| tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
если тебе обязательно работать нужно только с сессией, то
не очень удобно. В каждой странице вызывать base.Page_PreInit. Проблема в том, что в конструкторе базового класса еще не инициализирована текущая Session... Мне больше нравится работа с Сache или Application
-------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
| DimaSiK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 390 Регистрация: 20.8.2006 Репутация: нет Всего: нет |
Нет, вариант может быть и хорош, но только его нужно постоянно самому вызывать, нужно об этом помнить.
Добавлено через 13 минут и 31 секунду Неужели и в событии EndRequest я не могу достучаться до переменных сесии, ведь они уже создан? -------------------- Мы не стараемся быть первыми, мы стараемся быть лучшими. |
|||
|
||||
| tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
блин, а тебе трудно угодить!.. Чтоб все было, и ничего не помнить
О конвейере событий asp почитать не хочешь? -------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |