我有一個Asp.net的web服務。它有方法M1。 M1爲每個會話創建一個文件夾。當會話過期時,我使用以下代碼在global.asax中刪除該文件夾。爲什麼asp.net會話比其超時更早過期?
void Session_End(object sender, EventArgs e)
{
try
{
System.IO.DirectoryInfo dirMyPacksFolder = new System.IO.DirectoryInfo(Utilities.getMyPacksFolder(Session));
//dirMyPacksFolder.Parent.CreateSubdirectory("ended_" + Session.SessionID);
if (dirMyPacksFolder.Exists)
{
dirMyPacksFolder.Delete(true);
}
}
catch (Exception ex)
{
Utilities.logException("", ex);
}
}
當我打開我的瀏覽器的web服務,並呼籲M1,它正確操作和文件夾上,我已設置超時到期時間刪除。但是當我第二次提交webservice的「Invoke」按鈕時(會話超時和文件夾被刪除後),其會話開始(創建文件夾)和結束(刪除文件夾)在我設置的超時之前。
爲什麼會發生這種情況?
如果我爲每個方法調用一個新窗口(新會話)調用一切正常。但是當我第二次點擊「Invoke」按鈕時,我遇到了問題。這對於相同的會話來說就像是緩存問題。
是的,我使用會話狀態 – breceivemail 2012-07-08 05:16:08
你不使用'Session_Start'和'Session_End'爲***計數***用戶? 我使用WebFarm,sessionsate模式SqlServer。 任何源代碼samplefull? 未找到鏈接,請使用http://thecodeking.co.uk/article/asp-net-session-end-event-fires-immediately-after%20session-start-resolved/ – 2016-11-05 13:17:55