Когда ты это делаешь? это в модульном событии?
Это должно быть прекрасно выполнимо и в интегрированном пуле.
В итоге произошли изменения в том, как ASP.NET подключается к IIS при работе в интегрированном режиме, что делает его «более первым классом». Это означает, что определенные события запускаются раньше, например Application_Start теперь будет запускаться вне контекста фактического запроса. Другие примеры предполагают наличие удостоверения подлинности Windows в BeginRequest, поскольку теперь BeginRequest происходит еще до проверки подлинности IIS, чего не было в прошлом.
Если ваше приложение зависит от старого плохого поведения, вы все равно можете изменить свой AppPool для работы в Классическом режиме, и он будет работать просто отлично.
Вы должны иметь возможность получать запрос в любых уведомлениях, относящихся к конкретному запросу, таких как BeginRequest, EndRequest, PostAuthorizeRequest и т. Д.
Кроме того, я бы рекомендовал не использовать HttpContext.Current, поскольку это требует дополнительного поиска в хеш-таблице, и обычно вы можете получить контекст напрямую другими способами, особенно в контексте модуля, например, если вы обрабатываете BeginRequest, Вы должны быть в состоянии сделать:
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
и вы сохраните поиск.
Из вашего описания звучит так, как будто вы должны реализовать модуль, который обрабатывает BeginRequest и EndRequest, и с вами все будет в порядке.