【发布时间】:2010-09-05 18:55:03
【问题描述】:
对于来自客户端的给定 HTTP 请求,ASP.NET HttpApplication 的 BeginRequest 和 EndRequest 是否总是发生在完全相同的线程上?
我问的原因是我看到一些非常奇怪的行为,即 IHttpModule 的 Init 方法中的 ThreadStatic 变量不为空。
我在 BeginRequest 上将此 ThreadStatic 变量设置为一个值,并在 EndRequest 上将其设为空。
但是,我的 IHttpModule Init 方法应该在 BeginRequest/EndRequest 期间之外调用,所以我能想到的唯一方法是,当调用我的 Init 方法时,这个 ThreadStatic 变量将具有一个值是 EndRequest 是否发生在不同的线程上比 BeginRequest ,因此稍后当 ASP .NET 尝试使用同一线程创建新的 HttpApplication 实例时,该值仍然不为空......
我在集成模式下运行 IIS 7。
【问题讨论】: