Вопрос по session, asp.net – Почему событие Session_End не возникает, когда StateProvider не является InProc?

5

Я задаю этот вопрос из любопытства.

Я заметил это в моем global.asax

void Session_End(object sender, EventArgs e)
{
    // Code that runs when a session ends. 
    // Note: The Session_End event is raised only when the sessionstate mode
    // is set to InProc in the Web.config file. If session mode is set to StateServer 
    // or SQLServer, the event is not raised.
}

Я хочу понять, почему событие Session_End не перехватывается / вызывается, когда режимом сеанса является StateServer или SQLServer?

Ваш Ответ

2   ответа
9

Состояние сеанса ASP.NET это больше не в памяти ...

при использовании другого процесса для сохранения состояния сеансаIIS does not know ( он не связан, состояние сеанса больше не поддерживается IIS), когда сеанс заканчивается ...

это особенно потому, что таймауты я никогда не пробовал, но происходит ли это событие, когда вы программно вызываете Session.Abandon () ??

Error: User Rate Limit Exceededmsdn.microsoft.com/en-us/library/…Error: User Rate Limit Exceeded
2

Session_End событие поддерживается толькоInProc менеджер сеансов:

ASP.NET Session-State Events (MSDN)

"The Session_OnEnd event is supported only when the session state Mode property is set to InProc, which is the default. If the session state Mode is StateServer or SQLServer, then the Session_OnEnd event in the Global.asax file is ignored. If the session state Mode is set to Custom, then support for the Session_OnEnd event is determined by the custom session-state store provider."

В этой статье объясняется, как использоватьHttpModule подражать этой функциональности:

ASP.NET HttpModule for handling session end with StateServer (CodeProject)

Error: User Rate Limit Exceededmsdn.microsoft.com/en-us/library/…
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededmsdn.microsoft.com/en-us/library/…Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы