Получение `HttpContext` из универсального обработчика с помощью` HttpModule` - PullRequest
0 голосов
/ 14 мая 2019

Я работаю над классом HttpModule для сбора данных о производительности и времени выполнения приложений ASP.Net.

Я выяснил, как получить доступ к Session для получения информации о ASPX файлах и классах, реализующих IHttpHandler (например, о пользовательских веб-ресурсах или axd файлах), но я не могу найтиспособ доступа к экземпляру HttpContext, который передается в ProcessRequest() в универсальном обработчике (ASHX файл).

Application.Session создает HttpException

(Состояние сеанса недоступно в этом контексте)

и HttpContext.Current.Session == null.

Спасибо!

1 Ответ

2 голосов
/ 15 мая 2019

Если вы добавите новый универсальный обработчик в ваш проект, он будет выглядеть следующим образом

public class Handler1 : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
    }

Где context передается как HttpContext, который вы можете использовать.

И если вам нужно прочитать сессию, вам нужно добавить IReadOnlySessionState или IRequiresSessionState (разницу см. Здесь )

using System.Web.SessionState;

public class Handler1 : IHttpHandler, IReadOnlySessionState
...