asp.net - session 变量对象在回发时被删除 - ASP.NET

标签 asp.net session

我做了类似下面的代码:

protected void Page_Load(object sender, EventArgs e)
{
   Label1.Text = Session["loginid"].ToString();
}

protected void delete_click(object sender, EventArgs e)
{
    delete("mail1",Session["loginid"]);
}

private int delete(string mailid, string user)
{
 System.IO.Directory.Delete(Server.MapPath(@"~\files\" + user + @"\" + mailid), true);
}

当我按下删除按钮时,一切正常,文件夹被删除。 但之后当页面再次回发时 NullRefrenceException 在以下位置引发 Label1.Text = Session["loginid"].ToString();

为什么会发生...?

当我不使用此 Directory.Delete() 方法时,一切正常, session 变量未设置为空。

当我跟踪我的应用程序时,我发现在 Directory.Delete() 方法之后 session 变量是完整的,并且我能够在 Directory.Delete() 之后的处理中使用这些 session 变量。

但是一旦页面回发,所有 session 变量都设置为空。 当我不使用此 delete() 方法时,不会出现此问题。

我要删除的文件夹在我的项目文件夹中。 我正在使用 Visual Studio 运行这个网站。

请帮忙。

最佳答案

这里只是另一个猜测,但可能是因为您修改了应用程序目录中的某些内容(自从您将 Server.MapPath~ 一起使用以来的预感)。 IIS 可能认为应用程序已更改并回收应用程序,结果清除所有 session 。

这类似于您在有人使用该应用程序时修改您的 web.config 文件,它会删除所有 session 并回收该应用程序。您是否要删除可能包含 IIS 用于应用程序的信息的目录?

您说过只有当您包含该行代码时才会发生这种情况,并且当应用程序被 IIS 回收或超时时, session 实际上只会被持续清除(除非您自己手动执行)。显然没有超时,所以回收肯定是正在发生的事情。

关于asp.net - session 变量对象在回发时被删除 - ASP.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2303642/

相关文章:

hibernate - Grails:未刷新的 session 和回滚的交易之间有什么区别?

php - 在子域下工作的 session cookie

asp.net - .net vNext Fedora 问题

c# - ASP.NET 网络服务

javascript - ASP.Net Ajax 控件工具包 "UpdatePanelAnimationExtender"破坏 jQuery focus() onload

javascript - 从 JavaScript 触发服务器端电子邮件,无需回发

node.js - Passport.js twitter 身份验证导致 500 错误,req.session 未定义