完全替换ASP.NET的会话ASP.NET会话对于传统的WebForms应用程序来说似乎是完美的,但是对于现代Ajax和MVC应用程序来说,它们做了一些严重的问题。具体来说,只有3种方法可以访问ASP.NET提供程序:锁定读写(默认)-会话被锁定在AcquireRequestState射击直到ReleaseRequestState火灾。如果浏览器同时发出3个请求,它们将在服务器上排队。这是MVC 2中唯一的选择,但是MVC 3允许.非锁定只读-会话没有锁定,但无法保存到这似乎是不过不可靠,因为有些读取似乎再次锁定会话。会话禁用-任何读取或写入会话的尝试都会引发异常。然而,使用现代MVC应用程序,我有很多Ajax事件同时发生-我不希望它们成为服务器上的队列,但我确实希望它们能够写入会话。我想要的是第四种模式:脏读,最后写赢我认为(很高兴得到纠正),唯一能做到这一点的方法就是完全取代ASP.NET的会话。我可以写我的自己的提供者,但是ASP仍然会用它所支持的3种模式之一来调用它。是否有任何方法使ASP.NET支持乐观并发?这就让我用一个新的类替换了对会话的所有调用,这个类基本上是做同样的事情,但不锁定-这是一种痛苦。我希望尽可能多地保留当前会话内容(最重要的是,在各种日志中保留会话ID),并尽可能减少代码替换量。有什么办法吗?理想情况下我想HttpContext.Current.Session指向我的新类,但不锁定任何请求。有人做过这样的事吗?似乎奇怪的是,对于所有的AJAXey MVC应用程序,这是一个新的问题与ASP。
3 回答
万千封印
TA贡献1891条经验 获得超3个赞
InProc
- 3 回答
- 0 关注
- 424 浏览
添加回答
举报
0/150
提交
取消