我有一个 Asp.net 网络服务。它有方法M1。M1 为每个会话创建一个文件夹。当会话过期时,我使用以下代码删除 global.asax 中的该文件夹。
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);
}
}
当我在浏览器中打开我的网络服务并调用 M1 时,它运行正常,并且在我设置的超时到期时间删除了该文件夹。但是当我第二次提交 web 服务的“调用”按钮时(在会话超时和文件夹被删除之后),它的会话在我设置的超时之前立即开始(创建文件夹)并结束(删除文件夹) 。
为什么会发生这种情况?
如果我为每个方法调用打开一个新窗口(新会话),一切都很好。但是当我第二次单击“调用”按钮时出现问题。这类似于相同会话的缓存问题。