它会表现得很好。是的,该类可能是静态的,但它将访问不同的内存部分,并且不应从此处产生冲突。
在内部,我相信 Session 的工作方式与 Cache 完全相同,只是 Session 使用唯一的 Key(我相信是当前会话 Id)来存储和检索字典中的数据。所以当你存储 Session["Foo"]= "Bar" 真的是在做 Session[session_id+"Foo"] = "Bar"
更新
我的假设是准证实的:
比较状态提供程序 默认情况下,ASP.NET 应用程序将会话状态存储在工作进程的内存中,特别是在 Cache 对象的私有槽中。选择INPROC模式时,会话状态存储在缓存对象内的插槽中。此插槽被标记为私有并且不能以编程方式访问。换句话说,如果您枚举 ASP.NET 数据缓存中的所有项目,则不会返回看起来像给定会话状态的对象。Cache 对象提供了两种类型的槽——私有的和公共的。允许程序员添加和操作公共插槽;系统,特别是在 system.web 程序集中定义的类,为自己保留私有插槽。每个活动会话的状态在缓存中占用一个私有槽。插槽以会话 ID 命名,值是名为 SessionStateItem 的内部未记录类的实例。InProc 状态提供程序获取会话 ID 并检索缓存中的相应元素。然后将 SessionStateItem 对象的内容注入到 HttpSessionState 字典对象中,并由应用程序通过 Session 属性访问。请注意,ASP.NET 1.0 中的一个错误使 Cache 对象的私有插槽可以编程方式枚举。如果您在 ASP.NET 1.0 下运行以下代码,您将能够枚举与包含每个当前活动会话的状态的对象相对应的项。然后将 SessionStateItem 对象的内容注入到 HttpSessionState 字典对象中,并由应用程序通过 Session 属性访问。请注意,ASP.NET 1.0 中的一个错误使 Cache 对象的私有插槽可以编程方式枚举。如果您在 ASP.NET 1.0 下运行以下代码,您将能够枚举与包含每个当前活动会话的状态的对象相对应的项。然后将 SessionStateItem 对象的内容注入到 HttpSessionState 字典对象中,并由应用程序通过 Session 属性访问。请注意,ASP.NET 1.0 中的一个错误使 Cache 对象的私有插槽可以编程方式枚举。如果您在 ASP.NET 1.0 下运行以下代码,您将能够枚举与包含每个当前活动会话的状态的对象相对应的项。
来源:http: //msdn.microsoft.com/en-us/library/aa479041.aspx
(为格式道歉。从手机发布)