使用HttpListener时如何引用当前的http上下文?

时间:2011-08-06 06:37:32

标签: vb.net httplistener

使用ASP时,我们可以从代码中的任何位置引用HttpContext.Current来获取当前的http上下文。

我想使用HttpListener做类似的事情,这样我就可以从我的代码中的任何地方访问GET / POST数据等。我可以为此引用一些全局对象,还是需要在代码中显式传递当前的HttpListenerContext对象?

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

2 个答案:

答案 0 :(得分:1)

您应该通过代码将上下文对象作为参数传递,以允许更好的多线程。静态将导致损坏(当您没有Tymek指出的正确上下文时,或者如果没有通过同步进行适当保护)或者并发问题。通过传递上下文对象,您可以根据需要提供尽可能多的并行执行请求。

答案 1 :(得分:0)

好的,所以没有咬,但我自己解决了。我找到了两种方法:

1)将httplistener请求上下文存储在线程存储中 - 工作,但这是一种更简单的方法;

2)将httplistener请求上下文存储在ThreadStatic变量中 - 太简单了!

Public Class CurrentRequest

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

End Class