是否在服务器场环境OnSessionStart /在session_start事件仍然只火一次(总),或因为请求是由多个服务器来处理,可以将它火起来一次每个服务器?

ASP.NET / IIS6或7

它应该的假定服务器使用粘性会话。

有帮助吗?

解决方案

通过IIS的默认安装的答案是“不” - 在在session_start会在一般消防多次。客户端将它击中了每个不同的服务器上创建一个新的会话。同样的事情会发生,如果你使用的是IIS中的Web园选项。

如果你不依赖于会话,你有一个服务器场你平时最好把完全禁用会话状态。这里是你如何做到这一点: http://support.microsoft.com/kb/306996

如果你不依赖于会话您最好的选择可能是ASP.NET状态服务器服务。场中的所有服务器都将使用会话状态的单个服务器,这将确保在session_start只能触发一次。对于大量的背景和细节上的设置阅读(查找“状态服务器模式”,了解具体说明): http://aspdotnetdevs.blogspot.com/2008/12 /aspnet-session-state-and-modes.html

其他提示

除了托马斯:这取决于你的会话状态设置

在web.config中,<sessionState mode="" >

如果您使用mode="InProc"你会得到多个会话和SessionStart事件,每秒访问服务器1。

在其他模式(StateServer的或SqlServer的),你会得到1次会议和1个SessionStart。你会的不可以获得SESSIONEND事件都没有。

在一个农场,你会使用SQL Server或对场中的所有服务器管理会话状态的状态服务器。它是有这个单个服务器的状态后,看起来比确保OnSessionStart只应调用每个会话一次,没有必要非得总是有所有请求返回到同一台服务器。

使用单个服务器用于维持会话状态的主要缺点是,你不再有OnSessionEnd事件。

我的理解是,一旦一个请求场中达到一个服务器,所有相同的客户端即将请求应被重定向到服务器场中的同一服务器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top