【发布时间】:2011-03-19 18:27:14
【问题描述】:
我有实现 IRequiresSessionState 的 ASHX HTTPHandler。当我调用此处理程序并在另一个窗口中调用同一应用程序的 aspx 页面时,aspx 页面不会开始处理,直到 ashx 页面完成处理。即使从两个不同的窗口调用同一个 ashx 页面,也会显示首先被调用的页面会执行,然后是下一个。
当我不实现 IRequiresSessionState 时,页面异步加载,无需等待其他页面完成。
对于希望在多个窗口中工作的最终用户来说,这可能是一个严重的瓶颈。
会话具有用户特定的数据。如果上述方法不起作用,需要另一种方法来存储会话的用户特定数据,可以在 HTTPHandler 中使用。
其他信息: - 我正在使用 ashx 处理程序来处理和发送内部需要 Session 的文件。
【问题讨论】:
-
重现行为,看起来确实很吓人。通用处理程序中的一个简单的
Thread.Sleep会杀死所有其他请求。 -
IReadOnlySessionState确实有效。 -
@Darnin:如前所述,我有 ASHX 处理程序,因此 Thread.Sleep 不应该杀死所有请求,而且它不在我的代码中。正在修改进程中的会话数据,所以我需要 IRequireSessionState。我也更有兴趣找出为什么会发生这种情况。
标签: asp.net session httphandler