在ASP.NET的文件Global.asax里不能执行Session_Start这个事件?

时间:2022-08-25 22:33:49
在ASP.NET的文件Global.asax里不能执行Session_Start这个事件,不知为何?

8 个解决方案

#1


应该是应用程序第一次启动时执行,你重启下asp.net服务器

#2


试试我这个例子:

<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        // 在应用程序启动时运行的代码
        WriteFile("应用程序启动。");
    }
    
    void Application_End(object sender, EventArgs e) 
    {
        //  在应用程序关闭时运行的代码
        WriteFile("应用程序关闭。");
    }
     
    void Application_Error(object sender, EventArgs e) 
    { 
        // 在出现未处理的错误时运行的代码
        System.Web.HttpContext.Current.Response.Redirect("GlobalError.aspx");
        
    }

    void Session_Start(object sender, EventArgs e) 
    {
        // 在新会话启动时运行的代码
        WriteFile("创建新Session。");
    }

    void Session_End(object sender, EventArgs e) 
    {
        // 在会话结束时运行的代码。 
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
        // 或 SQLServer,则不会引发该事件。
        WriteFile("销毁Session。");
    }

    private void WriteFile(string log)
    {
        string fileName=Server.MapPath("~/FileLog.txt");
        System.IO.FileInfo file = new System.IO.FileInfo(fileName);
        System.IO.StreamWriter writer = null;
        if (!file.Exists)
        {
            writer = new System.IO.StreamWriter(file.Create(),System.Text.Encoding.UTF8);
        }
        else
        {
            writer = new System.IO.StreamWriter(fileName,true, System.Text.Encoding.UTF8);
        }
        writer.WriteLine(DateTime.Now.ToString() + ":" + log);
        writer.Close();
    }
       
</script>

#3


不行.
Application_Start这个有call到.
但Session_Start就没有call到,不知为何.郁闷中.

#4


应该可以..

#5


帮顶!

#6


你有在页面里创建Session对象没? Start事件是在会话对象被创建时才会触发的.

#7


你可以加个 按钮(比如:退出) 单击 显示的让Session销毁。在事件里加如下代码:
 Session.Abandon();

#8


还是不行啊.是Session_Start没有执行啊.

#1


应该是应用程序第一次启动时执行,你重启下asp.net服务器

#2


试试我这个例子:

<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        // 在应用程序启动时运行的代码
        WriteFile("应用程序启动。");
    }
    
    void Application_End(object sender, EventArgs e) 
    {
        //  在应用程序关闭时运行的代码
        WriteFile("应用程序关闭。");
    }
     
    void Application_Error(object sender, EventArgs e) 
    { 
        // 在出现未处理的错误时运行的代码
        System.Web.HttpContext.Current.Response.Redirect("GlobalError.aspx");
        
    }

    void Session_Start(object sender, EventArgs e) 
    {
        // 在新会话启动时运行的代码
        WriteFile("创建新Session。");
    }

    void Session_End(object sender, EventArgs e) 
    {
        // 在会话结束时运行的代码。 
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
        // 或 SQLServer,则不会引发该事件。
        WriteFile("销毁Session。");
    }

    private void WriteFile(string log)
    {
        string fileName=Server.MapPath("~/FileLog.txt");
        System.IO.FileInfo file = new System.IO.FileInfo(fileName);
        System.IO.StreamWriter writer = null;
        if (!file.Exists)
        {
            writer = new System.IO.StreamWriter(file.Create(),System.Text.Encoding.UTF8);
        }
        else
        {
            writer = new System.IO.StreamWriter(fileName,true, System.Text.Encoding.UTF8);
        }
        writer.WriteLine(DateTime.Now.ToString() + ":" + log);
        writer.Close();
    }
       
</script>

#3


不行.
Application_Start这个有call到.
但Session_Start就没有call到,不知为何.郁闷中.

#4


应该可以..

#5


帮顶!

#6


你有在页面里创建Session对象没? Start事件是在会话对象被创建时才会触发的.

#7


你可以加个 按钮(比如:退出) 单击 显示的让Session销毁。在事件里加如下代码:
 Session.Abandon();

#8


还是不行啊.是Session_Start没有执行啊.