自定义会话状态模块 - 使用ASP状态服务

时间:2016-03-14 13:23:08

标签: asp.net session stateserver

编辑(澄清我的问题):我们可以使用我们自己的代码使用Out Of Process Asp.NET状态服务的API或方法,还是专有的?

我们正在研究实现一个custom session state module,它重用了asp存储模块的组件。我们的主要目标是阻止会话锁定(不将会话状态模式更改为ReadOnly)。 这可能吗?

我们希望使用的关键部分之一是能够使用.NET内部使用的相同的Out of Proc会话存储提供程序(ASP状态服务),因为我们有一个负载平衡的环境不使用粘性会话。

我已经在the reference source中挖掘了代码,我的发现如下。我希望有人有一个不同的实用程序可能用于集成自定义会话状态模块ASP状态服务。

默认会话模块为System.Web.SessionState.SessionStateModule。这是一个Sealed类。此类似乎是唯一使用SessionStateMode.StateServer enum值的类(在Web配置中指定)。

设置此标志后,模块会将_store变量设置为Friend Sealed类的新System.Web.SessionState.OutOfProcSessionStateStore

我最初对如何做到这一点有一些想法,并且由于上面类的修饰符,我无法做到这些。还有其他方法可以采取吗?

  1. 实例化新的System.Web.SessionState.SessionStateModule并引用_store变量。这不起作用,显然是因为_store变量是私有的。
  2. 我尝试创建一个继承自System.Web.SessionState.SessionStateModule的类,但很明显,因为sealed不起作用。
  3. 看着从.NET框架代码中复制代码。意识到这将是一个非常糟糕的决定。
  4. 我有什么选择吗?

1 个答案:

答案 0 :(得分:-2)

我建议你阅读这个主题:I just discovered why all ASP.Net websites are slow, and I am trying to work out what to do about it

它提供了会话主题的一些起点和信息,尤其是锁定问题。

如果您查找会话模块的自定义实现,可以在此处查看: http://www.codeproject.com/Articles/11712/Custom-session-state-management-in-ASP-NET