如果您沒有在global.asax中明確定義Session_Start
和Session_End
,幕後會發生什麼?你的程序是否假設它在那裏?Session_Start/_End,如果它們不包含在全局中,幕後會發生什麼?
有一個內部的應用程序,我最近正在處理全球沒有這些定義,並且程序開始有幾個會話超時問題。一旦我添加了這些功能,他們似乎就可以解決了。
如果您沒有在global.asax中明確定義Session_Start
和Session_End
,幕後會發生什麼?你的程序是否假設它在那裏?Session_Start/_End,如果它們不包含在全局中,幕後會發生什麼?
有一個內部的應用程序,我最近正在處理全球沒有這些定義,並且程序開始有幾個會話超時問題。一旦我添加了這些功能,他們似乎就可以解決了。
Session_Start
和Session_End
只是鉤子。它們不是必需的,並且會話的功能不受這種或那種方式的影響,無論您是否在Global.asax中覆蓋它們。
我不確定你的超時問題的根源是什麼,但是如果它們被糾正了,那麼它是通過你在這些重寫中做的任何事情完成的,而不是僅僅存在重載。
更多的技術細節
我暗示了它上面,但我想我應該更加明確。從Global.asax
派生的類System.Web.HttpApplication
在其上定義了許多「鉤子」。實質上,這些只是允許您在關鍵時間點注入功能的佔位符。換句話說,當ASP.NET需要創建會話時,作爲該操作的一部分,它會調用Session_Start
。默認實現什麼都不做,但是如果你在你的派生類中覆蓋它,那麼該覆蓋中的代碼就會運行。
如果您想跟蹤會話開始時間,您可以將會話變量添加到Session_Start中,如「SessionStartTime」。
感謝您的解釋Chris –