对于本地部署,ASP.NET 会话状态提供了三种内置存储选项(InProc、StateServer 和 SqlServer)以及第四个“自定义”选项。前两个内置选项(InProc StateServer)存在可扩展性问题,而 SqlServer 选项则同时存在性能和可扩展性问题。
更好的策略是使用“自定义”选项和插件 NCache 身为你的 ASP.NET 会话状态提供程序. NCache 是一个非常快速和可扩展的.NET 开源分布式缓存。 它通过允许您在运行时添加更多缓存服务器并线性扩展来处理极端事务负载。 NCache 还提供智能 缓存复制 因此,如果 Web 服务器或缓存服务器出现故障,您不会丢失任何 ASP.NET 会话状态。
实施 NCache 您的会话状态提供程序 (SSP) 无需任何代码更改。您只需按照以下步骤操作:
请参阅配置详情 ASP.NET 会话状态提供程序 HPMC胶囊 NCache。以下是使用 NCache 作为您的 ASP.NET 会话状态提供程序:
NCache 提供了两种方法来管理在多个区域(数据中心)运行的应用程序的 ASP.NET 会话状态,并保持会话在各个区域之间的一致性。具体方法如下:
ASP.NET 会话状态的 WAN 复制: NCache 提供了一个 桥接拓扑 让你将整个 ASP.NET 会话状态存储(分布式缓存)复制到另一个区域(数据中心) 广域网这可确保您的会话始终存在于多个区域(数据中心)中。您可以在主动-被动(用于灾难恢复)或主动-主动模式下使用此功能。在主动-主动模式下,您甚至可以在多个区域(数据中心)之间平衡流量负载。所有这些都可以通过配置更改来实现。
多区域 ASP.NET 会话状态: 如果您不想因为带宽消耗成本而跨 WAN 复制 ASP.NET 会话状态,则可以使用 多站点 ASP.NET 会话状态 的特点 NCache。在这种情况下,ASP.NET 会话状态不会跨站点复制,而是保存在其创建位置。但是,如果您将任何流量从一个区域(数据中心)移动到另一个区域,ASP.NET 会话状态也会随之移动。这允许您拥有两个或多个活动区域(数据中心),每个区域的大部分流量都保持在本地,但偶尔会在需要时溢出到另一个区域。
而且,您还可以关闭一个数据中心而不会对用户造成任何中断,因为他们的会话可以被其他数据中心访问。
此 NCache ASP.NET 会话状态提供程序实现了所有标准 ASP.NET 会话状态提供程序 功能。此外,它还提供各种高级功能,让您可以处理应用程序中的复杂情况。
INSTALL_DIR\NCache\log-files\SessionStoreProvider 文件夹)通过指定 enableLogs = "true". 您还可以通过指定将错误记录到 Windows 事件日志中 writeExceptionsToEventLog = "true".标准会话锁定: 标准的 ASP.NET 会话锁定行为是:如果会话被锁定,则另一个针对该会话的请求将等待 90 秒(可配置),并在最后强制解锁该会话。您可以按如下方式指定此选项:
enableSessionLocking = "true" sessionLockingRetry = "-1" emptySessionWhenLocked = "false"
增强的会话锁定: 如果您有一个高流量的 ASP.NET 应用程序,其中机器人可能正在抓取数据,并使用相同的会话 ID 同时处理数百或数千个请求。您无法承受标准的会话锁定选项,因为等待 90 秒可能会占用所有可用的套接字。相反,您希望快速返回请求以指示失败。您可以按如下方式指定:
enableSessionLocking = "true" sessionLockingRetry = "5" emptySessionWhenLocked = "false"
这会以半秒的间隔进行 5 次重试,然后返回一个空会话以表示失败。