IReadOnlySessionState背后的基本原理

hei*_*erg 4 c# asp.net session-state

我刚刚实现了一个使用IReadOnlySessionState的处理程序,并想知道为什么需要这个标记接口.(我知道为了访问Session变量需要它,我的问题是为什么这是从框架设计者的角度来看)我的想法是,处理程序可以尽可能精简,要求他们"选择加入"他们想利用会话状态,但我想知道是否我错过了其他的东西.

ren*_*een 8

你是对的.IReadOnlySessionState接口只是让您可以使用Context.Session对象.

但是如果你实现IRequiresSessionState接口,你的处理程序会对当前会话进行独占锁定,所以在同一个会话的上下文中所有其他请求(想要使用Session对象)将等到你的处理程序完成.

IReadOnlySessionState是不是很好的名称,因为实际上你可以在这样的处理程序中修改SessionState,你不会得到一个例外.您只需对您的并发问题负责.