使用ASP时,我们可以从代码中的任何位置引用HttpContext.Current来获取当前的http上下文。
我想使用HttpListener做类似的事情,这样我就可以从我的代码中的任何地方访问GET / POST数据等。我可以为此引用一些全局对象,还是需要在代码中显式传递当前的HttpListenerContext对象?
' This is what I want to access
Dim Context As HttpListenerContext = Listener.EndGetContext(StateObject)
答案 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