IIS 中的会话处理选项

IIS 中的会话处理选项

使用现代 .NET IIS Web 架构进行会话处理有哪些选项?

我理解 IIS 的原生会话支持在重启时会丢失会话。此外,Microsoft 建议将会话存储在数据库中,这是我的首选解决方案。

我正在尝试构建一个高可用性的 .NET IIS 平台,该平台可以水平扩展以用于第三方应用程序。该应用程序是外部开发的,虽然我可以推动将其存储在数据库中,但这在近期内无法实现。

第三方建议使用持久会话,这是我避免的。粘性会话会降低可用性,因为当 Web 服务器不可用时,它会导致之前使用该服务器的客户端出现可访问性问题。此外,它还会降低负载平衡功能,因为单个服务器可能会比其他服务器收到更多的请求。IIS 重新启动时仍会丢失会话,这是我更希望消除的。我也不想将会话存储在客户端的 cookie 中。

我希望实现完全高可用性,同时仍允许将应用程序部署到空闲服务器而不产生影响。此外,实现完全负载平衡。我可以在不重写应用程序的情况下在此技术平台上启用此功能吗?我有哪些选择?

答案1

ASP.net 2.0 及以上版本支持将会话存储在 SQL 服务器中,只需更改 web.config 中的 SessionState 提供程序并使用 aspnet_regsql.exe 设置 SQL 数据库即可。您可以在MSDN - 会话状态提供程序页。

更新:还有更易读的分步说明,请访问MSDN - 会话状态模式页。

答案2

我们在俄亥俄州 Linux 盛会上讨论了 .NET 会话状态提供程序的模块化,我提到有人可以为 .NET 会话状态创建分布式内存缓存。今天早些时候,一位客户向我询问了这个问题,我找到此产品看起来确实如此。

相关内容