【问题标题】:ASP.NET session drop eventASP.NET 会话删除事件
【发布时间】:2015-02-12 22:05:59
【问题描述】:

如果一个 asp.net 网络表单会话被丢弃(例如,客户端关闭浏览器 = 超时),他们有办法引起注意吗?

我们有一个临时用户购物卡会话:

HttpContext.Current.Session["UserShoppingCard"] = new UserShoppingCard();

除了上面解释的功能之外,一切都很好。

谢谢!

【问题讨论】:

  • 我不相信在发出请求之前与服务器有任何通信。我用 jQuery 和 AJAX 做到这一点。我每 30 秒请求一个 ASP.Net Web 服务作为保持活动的服务。这样的事情可能是你最好的选择。
  • @MichaelC.Gates 感谢您的回答。我不明白你的意思。会话掉线没问题,我只需要这个信息来发送电子邮件。
  • @BendEg 你完全没有意义。想想看,你正试图将新对象存储在你的 SESSION 中,如果会话被丢弃,你究竟想把它保存在哪里?
  • 我不想保存任何东西,@Dave Piras 的回答似乎是正确的,谢谢。

标签: c# asp.net session webforms session-variables


【解决方案1】:

我会尝试拦截 global.asax 文件中的 Session_End 事件并在其中放置一些日志记录,它可能不会在浏览器关闭时立即发生,但无论如何都会在某个时候发生一次会话终止,您可以在其中包含您的逻辑。

事实上,服务器永远不知道浏览器何时关闭,或者连接问题是否导致客户端无法连接。

【讨论】:

  • 我想,每个session都存储了最后一次访问时间,到了超时时间,seesion就会过期。
  • @BendEg 是的,最后一段把我吓跑了 :) 前面的那个解释了它 - “......无论如何......”
【解决方案2】:

如前所述,用代码补...

public class Global : System.Web.HttpApplication
{
    protected void Session_End(object sender, EventArgs e)
    {
        //Do your things here when session ends...
    }
}

【讨论】:

    猜你喜欢
    • 2012-08-12
    • 2011-11-08
    • 1970-01-01
    • 2017-03-16
    • 2010-09-20
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多