我有一个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