>EDIT(澄清我的问题):是否有一种 API 或方法可供我们从我们自己的代码中使用进程外 Asp.NET 状态服务,或者这是专有的?
我们正在研究实现一个自定义会话状态模块,该模块重用 asp 附带的模块组件。我们的主要目标是防止会话锁定(而不将会话状态模式更改为只读)。这可能吗?
我们希望工作的关键部分之一是能够使用与 .NET 内部相同的 Out of Proc 会话存储提供程序(ASP 状态服务),因为我们有一个不使用粘性会话的负载平衡环境。
我已经在参考源代码中深入研究了代码,我的发现如下。我希望有人有一个不同的实用程序,可用于集成自定义会话状态模块 ASP 状态服务。
默认会话模块为 System.Web.SessionState.SessionStateModule
。这是一个Sealed
类。此类似乎是唯一使用 SessionStateMode.StateServer
枚举值(在 Web 配置中指定)的类。
设置此标志后,模块将_store
变量设置为新System.Web.SessionState.OutOfProcSessionStateStore
,这是一个Friend Sealed
类。
最初对如何做到这一点有一些想法,但由于上面类的修饰符,我无法做到这一点。是否有其他方法可以采取?
- 实例化新
System.Web.SessionState.SessionStateModule
并引用_store
变量。这不起作用,显然是因为_store
变量是私有的。 - 我尝试创建一个继承自
System.Web.SessionState.SessionStateModule
的类,但显然因为它是sealed
所以不起作用。 - 已查看从 .NET 框架代码复制代码。意识到这将是一个非常糟糕的决定。
我缺少任何选项吗?
我建议您阅读此主题:我刚刚发现为什么所有 ASP.Net 网站都很慢,我正在尝试解决这个问题。
它提供了有关会话主题的一些起点和信息,尤其是锁定问题。
如果您寻找会话模块的自定义实现,可以在此处查看:http://www.codeproject.com/Articles/11712/Custom-session-state-management-in-ASP-NET