为什么在App Start上调用Session End?

时间:2015-07-17 06:07:34

标签: c# asp.net session

我希望释放一些数据库资源,并在ASP.NET站点中的用户会话结束时设置一些标志。但是当我编写我的代码以访问Global.asax文件的Session End方法中的会话变量时,每次应用程序启动时都会调用它,为什么会出现这种奇怪的行为?

其次,我想访问用户特定的会话变量,并在Session End上的DB中释放它们。因此,我使用的会话变量很少,我在页面上的web方法中设置它们并尝试在Session End上访问它们。但是,自从在App启动时调用Session结束时,它总是抛出Null引用异常。

这是mycode。在.aspx页面中设置Webmethod中的变量

   [WebMethod(EnableSession=true)]
protected void checkUser()
        {
            Session["TestObject"] = "Hello I am session";
}

在我的global.asax文件中,我试图在Session_End方法

中按如下方式访问
void Session_End(object sender, EventArgs e)
    {
        // Code that runs when a session ends. 
        // Note: The Session_End event is raised only when the sessionstate mode
        // is set to InProc in the Web.config file. If session mode is set to StateServer 
        // or SQLServer, the event is not raised.
        if (this.Context.Session != null && this.Context != null)
        {
            string k = this.Session["TestObject"].ToString();
        }

    }

我甚至尝试过HttpContext.current.Session等。但都没有用。所有都抛出异常,因为在应用启动时调用会话结束,甚至在会话超时时调用。

0 个答案:

没有答案