Вот сценарий:
У меня есть HttpHandler, который я хотел бы запустить для определенных URL-адресов, но эти URL-адреса не имеют постоянных расширений, поэтому я не могу сопоставить обработчик, используя httpHandlers в Интернете.config.
Вместо этого у меня есть собственный HttpModule, в котором я подписываюсь на PostAuthenticateRequest, проверяю некоторые условия и назначаю свой пользовательский обработчик, используя HttpContext.RemapHandler (), если текущий URL подходит.
Это все прекрасно работает, но ...
Чтобы повысить производительность, я хотел бы выполнять проверку URL и назначение обработчиков, только если обработчик еще не назначен.Я не буду утомлять вас тем, почему мой обработчик применяется только тогда, когда никакой другой обработчик не назначен, но это всегда так.
Реальная проблема здесь заключается в том, что можно проверить только, если обработчик уже назначен в PostMapRequestHandler,и к тому времени уже слишком поздно использовать RemapHandler (), потому что будет выдано исключение InvalidOperationException (см. http://msdn.microsoft.com/en-us/library/system.web.httpcontext.remaphandler.aspx)
. Я думаю, что в этот момент может работать (но не работает) HttpContext.Handler = x; вместо HttpContext.RemapHandler (x);
При установке таким образом HttpContext.CurrentHandler обновляется и все выглядит великолепно, но ProcessRequest () пользовательского обработчика никогда не вызывается.
Спасибозаранее за ваши мысли / комментарии / понимание.