Big*_*oss 4 asp.net session httphandler
我有实现 IRequiresSessionState 的 ASHX HTTPHandler。当我调用此处理程序并在另一个窗口中调用同一应用程序的 aspx 页面时,aspx 页面在 ashx 页面完成处理之前不会开始处理。即使从两个不同的窗口调用相同的 ashx 页面也会显示首先执行的页面被调用,然后执行下一个。
当我不实现 IRequiresSessionState 时,页面异步加载,无需等待其他页面完成。
对于希望在多个窗口中工作的最终用户来说,这可能是严重的瓶颈。
会话具有用户特定的数据。如果上述方法不起作用,则需要另一种方式来存储会话的用户特定数据,可以在 HTTPHandler 中使用。
其他信息: - 正在使用 ashx 处理程序来处理和发送内部需要 Session 的文件。
小智 5
会话状态访问要求 aspx 页面和处理程序按顺序运行。每个页面/处理程序都可以读取和写入会话状态。为了处理这个而不在会话状态中产生任何错误,.net 一次只运行一个。正如 Darin 所建议的,以只读会话状态运行将改善这种情况。如果只需要读取访问权限,Asp.net 将允许多个处理程序同时运行。但是,该页面需要对会话进行写访问,因此当 aspx 页面本身运行时,不会运行任何处理程序。这是标准的多读取器单写入器锁定模式。您可以同时拥有多个读者,但只能有一个作者。
完成这项工作的唯一方法是让处理程序不需要会话状态,以便它们在 aspx 页面运行的同时运行。
您可以通过寻找另一种方式来存储此数据而不是使用会话状态来解决此问题。您可以实现自己的共享缓存/数据结构,但您也需要为该结构提供类似的锁定(多读取器/单写入器)。
| 归档时间: |
|
| 查看次数: |
2444 次 |
| 最近记录: |