我想在Golable.asax中的使用Session_OnEnd 事件,但是没有找到有这个事件,请各位大侠们指教,不胜感激!!!!!

解决方案 »

  1.   

    <%@ Application Codebehind="Global.asax.cs" Inherits="Global.Global" %>
    知留这一句。然后在App_Code中,添加后台。Global.asax.csusing System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.IO;/// <summary>
    ///Global 的摘要说明
    /// </summary>
    namespace Global
    {
    public class Global : System.Web.HttpApplication
    {
    protected void Application_Start(Object sender, EventArgs e)
    { }
     
    protected void Session_Start(Object sender, EventArgs e)
    {
    Application.Lock ();
    uint countnum=0;
    countnum=(uint)Application["counter"];
    countnum=countnum+1;
    object obj=countnum;
    Application["counter"]=obj;
    //将数据记录写入文件
    string file_path=Server.MapPath ("counter.txt");
    StreamWriter fs=new StreamWriter(file_path,false); 
    fs.WriteLine (countnum);
    fs.Close ();
            
    Application.UnLock ();
    } protected void Application_BeginRequest(Object sender, EventArgs e)
    { } protected void Application_EndRequest(Object sender, EventArgs e)
    { } protected void Session_End(Object sender, EventArgs e)
    { } protected void Application_End(Object sender, EventArgs e)
    {
    uint cnt=0;
    cnt=(uint)Application["counter"];
    string file_path=Server.MapPath ("counter.txt");
    StreamWriter fs=new StreamWriter(file_path,false); 
    fs.WriteLine(cnt);
    fs.Close ();
    }
    }
    }
      

  2.   

    添加protected void Session_End(Object sender, EventArgs e){  ...  }
      

  3.   

    global.asax就是一个特殊的httpmodule...
      

  4.   

    那我再问一下,Session_End事件都会在什么条件是触发?
    如果Session超时了,或者是将IE关闭了,或者是直接关机了,或者是掉电了,都可以触发吗?如果Browser端不管做什么事情,只要是Session超时,或者关闭Browser,Server端只要正常运行就可以触发该事件吗?
      

  5.   


    估计你对服务端和客户端不理解, 你的机器出事了,我服务器上怎么能知道呢...你的ie关闭了是客户的机器,我的服务器现在可探查不到,服务器怎么能知道失效了呢?答案....
    两种情况,一种是你好长时间不访问了(默认20分钟),另外就是你主动给服务器发送了个请求session.abondon()了....
      

  6.   

    明白了。
    还有一个问题,是不是每一个用户登录的时候都会触发Session_Start事件?
    同样当一个用户退出的时候也会触发Session_End事件?如果是,那么如何取得该用户的信息?我想在Global.asax.cs里面记录下所有用户的状态信息,不知道这种想法可行否?
      

  7.   


    可行...这个在10年前的asp3时代就这么用了.....不过你不该在start事件中,而是登陆处理做...在退出的时候session还没丢,从里面获值就是了...还有你放在数据库里储存,还是application里,还是哪储存他们的信息,这个你要想好了....
      

  8.   

    好,那再问一个问题,解决了就结了。
    请问:(小猪妹马甲之八卦兔子)
    browser端是否是将browser关闭就会有session_end事件触发?
      

  9.   

    browser端是否是将browser关闭就会有session_end事件触发?肯定不会啊...除非你做了ajax的操作...比如说判断一下onbeforeunload事件....你先理解一下服务段和客户端的概念....也就是browser都能做哪些事这个要想清楚了...呵呵
      

  10.   

    其实我最原始的需求也是比较简单的,就是在longin的时候,将用户的状态记录下来,等用户离线的时候,也将其记录下来。但是在哪里可以知道用户离线了,是一个问题,在网上看,发现了Session.end事件,于是就有了这个问题,呵呵。不知道我的根本问题怎么解决啊?一会儿把这个问题的分数给增加哈~~~~~~
      

  11.   

    ajax...随时监控,可以判断到1分钟以内....具体的可查询类似于开心网这样的网站...不过下线的时间也就这样了....我下午不在线