Как ссылаться на текущий http-контекст при использовании HttpListener? - PullRequest
0 голосов
/ 06 августа 2011

При использовании ASP мы можем ссылаться на HttpContext.Current из любого места в коде, чтобы получить доступ к текущему http-контексту.

Я хочу сделать что-то подобное, используя HttpListener, чтобы я мог получить доступ к данным GET / POST и т. Д. Из любой точки моего кода. Могу ли я сослаться на некоторый глобальный объект для этого или мне нужно явно передать текущий объект HttpListenerContext через весь мой код?

' This is what I want to access
Dim Context As HttpListenerContext = Listener.EndGetContext(StateObject)

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Вы должны передать объект контекста в качестве аргумента через ваш код, чтобы обеспечить лучшую многопоточность. Статика приведет к повреждению (если у вас нет надлежащего контекста, указанного Tymek, или если он не защищен должным образом синхронизацией), или к проблемам параллелизма. Передавая объект контекста, вы разрешаете параллельно выполнять столько запросов, сколько необходимо.

0 голосов
/ 07 августа 2011

Хорошо, так что никаких укусов, но я решил это сам.Я нашел два способа сделать это:

1) Сохранить контекст запроса httplistener в Thread Storage - работает, но есть более простой способ;

2) Сохранить контекст запроса httplistener впеременная ThreadStatic - слишком просто!

Public Class CurrentRequest

    <ThreadStatic()> Public Shared QueryString As String
    <ThreadStatic()> Public Shared PostStream As Stream

End Class
...