gpt4 book ai didi

asp.net - HTTPHandler : IRequiresSessionState halts execution of pages

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

我有实现 IRequiresSessionState 的 ASHX HTTPHandler。当我调用此处理程序并在另一个窗口中调用同一应用程序的 aspx 页面时,aspx 页面在 ashx 页面完成处理之前不会开始处理。即使从两个不同的窗口调用相同的 ashx 页面也会显示首先执行的页面被调用,然后执行下一个。

当我不实现 IRequiresSessionState 时,页面异步加载,无需等待其他页面完成。

对于希望在多个窗口中工作的最终用户来说,这可能是严重的瓶颈。

session 具有用户特定的数据。如果上述方法不起作用,则需要另一种方式来存储 session 的用户特定数据,可以在 HTTPHandler 中使用。

其他信息:
- 正在使用 ashx 处理程序来处理和发送内部需要 Session 的文件。

最佳答案

session 状态访问要求 aspx 页面和处理程序按顺序运行。每个页面/处理程序都可以读取和写入 session 状态。为了处理这个而不在 session 状态中产生任何错误,.net 一次只运行一个。
正如 Darin 所建议的,以只读 session 状态运行将改善这种情况。如果只需要读取访问权限,Asp.net 将允许多个处理程序同时运行。但是,该页面需要对 session 进行写访问,因此当 aspx 页面本身运行时,不会运行任何处理程序。这是标准的多读取器单写入器锁定模式。您可以同时拥有多个读者,但只能有一个作者。

完成这项工作的唯一方法是让处理程序不需要 session 状态,以便它们在 aspx 页面运行的同时运行。

您可以通过寻找另一种方式来存储此数据而不是使用 session 状态来解决此问题。您可以实现自己的共享缓存/数据结构,但您也需要为该结构提供类似的锁定(多读取器/单写入器)。

关于asp.net - HTTPHandler : IRequiresSessionState halts execution of pages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3312711/

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