gpt4 book ai didi

.net - ASP.NET 请求总是在同一个线程上进行 BeginRequest 和 EndRequest 吗?

转载 作者:行者123 更新时间:2023-12-01 13:05:09 25 4
gpt4 key购买 nike

对于来自客户端的给定 HTTP 请求,ASP.NET HttpApplication 的 BeginRequest 和 EndRequest 是否总是发生在完全相同的线程上?

我问的原因是我看到一些非常奇怪的行为,其中 ThreadStatic 变量在 IHttpModule 的 Init 方法内不为 null。

我在 BeginRequest 上将此 ThreadStatic 变量设置为一个值,并在 EndRequest 上将其设为空。

但是,我的 IHttpModule Init 方法应该在 BeginRequest/EndRequest 期间之外被调用,所以我能想到的唯一方法是当我的 Init 方法被调用时,这个 ThreadStatic 变量会有一个值是如果 EndRequest 发生在不同的线程上比 BeginRequest 更重要,因此当 ASP .NET 尝试使用同一线程创建新的 HttpApplication 实例时,该值仍然不为空...

我在集成模式下运行 IIS 7。

最佳答案

Does BeginRequest and EndRequest for an ASP .NET HttpApplication always occur on the exact same thread for a given HTTP request from a client?

没有。有一些选项可以在请求中执行异步操作,从而导致在不同线程上处理的请求结束。这不是正常情况。

参见@Page指令的异步属性:http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx

有关使用异步页面的介绍,请参阅这篇 MSDN 杂志文章:“Asynchronous Pages in ASP.NET 2.0”。

关于.net - ASP.NET 请求总是在同一个线程上进行 BeginRequest 和 EndRequest 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3647320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com