是啊,我也想知道,有没有别的方法原来在ASP里,好像有一个方法,记不得是什么了

解决方案 »

  1.   

    应该是一楼的方法,似乎一般都是取出来然后再draw一下
      

  2.   

    都是 一楼的方法~
    你是不是想说Application["usercount"]???
      

  3.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    int count;
    count = (int)Application.Contents["count"];
    count ++;
    Response.Write("你是第" + count + "个来本站");
    }
      

  4.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    int count;
    count = Application.Contents["count"] == null?0:(int)Application.Contents["count"];
    count ++;
    Response.Write("你是第" + count + "个来本站"); Application.Contents["count"] = count;
    }刚才写错了
      

  5.   

    麻烦大家了,那我的global.asax里应该怎么写呢,我是个新手,谢谢了!
      

  6.   

    在此要介绍4种计数器:各有各的功能.
     1)网站总共访问人数计数器
     这种计数器我们可以使用XML来实现,打开windows的记事本在其中录入以下数据另存为count.xml。
    <MyCount>
    <AllCount>0</AllCount> 
    <MaxCount>0</MaxCount>
    </MyCount>
    其中AllCount标签是记录web页面访问的总人数的,我们来编写代码操纵这个xml文件
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>//导入…
    <Script language="C#" runat=server>
    HttpCookie CkeCount=new HttpCookie("Count");//来一个cookie变量,用来判断访客是否在您的网站
    void Page_Load()
    {
    if(Request.Cookies["Count"]==null)//如果cookie为空,说明第一次载入您的页面
    {
    CkeCount.Value="true";//给cookie添加一个值
    /* 这里是可选代码,看看cookie是否失效,如果您设置成1个月,有个访客以前访问过您的站点,他的cookies里面有您存入的值,并且他的cookies没有清空那么再看if语句,那这个访客载入页面时在计数器中就不加1,如果您不设置cookies保留时间,那么访客离开 您的站点cookie自动消失。
    DateTime dt=DateTime.Now;
    TimeSpan ts=new TimeSpan(30,0,0,0);
    CkeCount.Expires=dt+ts;
    */
     
    ///**********xml 操作****************************8
    DataSet objDataSet=new DataSet(); 
    objDataSet.ReadXml(Server.MapPath("count.xml")); //dataset读xml文件
    objDataSet.Tables["MyCount"].Rows[0]["AllCount"]=Convert.ToInt64(objDataSet.Tables["MyCount"].Rows[0]["AllCount"])+1;//这里是写如xml,更新第一行Allcount标签的值+1
    objDataSet.WriteXml(Server.MapPath("database/count.xml"));//写如xml
    Response.Cookies.Add(CkeCount);//写入cookies

    lbCount.Text="总共"+objDataSet.Tables["MyCount"].Rows[0]["AllCount"].ToString();//显示在页面上
    }
    </script>
    <asp:label runat=server id=lbCount />
     2)当前在线人数计数器
     判断当前有几个人在您的站点,这个计数器比较简单,这里要用到Application变量和session的2个方法Application变量起着增加,减少人数的作用。
    在global.asax文件里面输入以下代码:
    <script language="c#" runat="Server">
    protected void Application_Start(Object sender, EventArgs e)
    {
    Application["user_sessions"] = 0;//声明一个application变量来做计数器
    }
    protected void Session_Start(Object sender, EventArgs e)
    {
    Application.Lock();//先锁定应用程序,这里大家都明白
    Application["user_sessions"] = (int)Application["user_sessions"] + 1;
    //当session_start方法启动时判断当前有几个人在线,然后赋值到Application["user_sessions"]变量.(int)强制转换类型,卸箱,装箱!
    Application.Unlock();
    }
    protected void Session_End(Object sender, EventArgs e)
    {
    Application.Lock();
    Application["user_sessions"] = (int)Application["user_sessions"] - 1;
    //当用户离开站点的时候,减1 卸箱,装箱! Object=int
    Application.Unlock();
    }
    都要写在Session_OnStart,和Session_OnEnd方法里面.
    </script>
    设置label控件把值读出.
     3)最大在线人数统计
     这个就很简单了,这里用application变量配合xml来完成,
    global.asax
    Application.Lock();//锁定应用程序
    DataSet objDataSet=new DataSet()
    objDataSet.ReadXml(Server.MapPath("database/count.xml"));//读xml文件
    if(Convert.ToInt64(objDataSet.Tables["MyCount"].Rows[0]["MaxCount"])<(int)Application["user_sessions"])//如果MaxCount标签里面的值小于当前在线人数的值,就存入,不小于则什么都不做。
    objDataSet.Tables["MyCount"].Rows[0]["MaxCount"]=(int)Application["user_sessions"];
    objDataSet.WriteXml(Server.MapPath("database/count.xml"));
    Application.UnLock();
     4)统计今日在线人数计数器
     这里要用到日期时间变量和2application变量,声名Application["datetTime"],和Application["day_count"]变量
    global。Asax文件
    Application["dateTime"]=0;//先给赋为0
    Application["day_count]=0;//今日访问统计变量,初始值为0
    Application.Lock();
    if(DateTime.Now.Day==Convert.ToInt32(Application["dateTime"]))
    //如果系统日期(天数,服务器上的) 等于Application["dateTime"]里面的值,则Application["day_count"]变量累加1.
    {
    Application["day_count"]=(int)Application["day_count"]+1;
    }
    else//如果不等于则把Application["day_count"]变量赋为1,Application["datetime"]赋为当天,依次类推
    {
    Application["datetime"]=DateTime.Now.Day;
    Application["day_count"]=1;
    }
     
    Application.UnLock();
     总结
    -----------------------------------------------------------------------------------
        网站总共访问人数计数器也可以设置成每ip,,代码自己写了 :)还有最好把代码放在首页,这样统计还比较现实,因为一个新的浏览者80%不可能从别的页面来访问您的站点。
         统计最大在线人数计数器为什么要存入xml文件呢?存入application变量不行吗?很简单:如果服务器断电了那岂不是白存了?
         当然这些计数器都不是很准确,但是能大体表现一个网站的流量了
      

  7.   

    谢谢 zytp(翱翔.Net)和各位的热心回答,我按照 zytp(翱翔.Net)的第一个做了,但是这句话不知道是那里错了,错误如下:
         编译器错误信息: CS0246: 找不到类型或命名空间名称“objDataSet”(是否缺少 using 指令或程序集引用?)源错误:
    行 17:     }
    行 18: 
    行 19: lbCount.Text="总共"+objDataSet.Tables["MyCount"].Rows[0]["AllCount"].ToString();
    行 20: 
    行 21: }
    不知道应该怎么改好,已经调过几次了,还是没用,还希望大家再帮帮忙,谢谢!
      

  8.   

    在Session_Start中把全局变量加1即可
      

  9.   

    在Session_Start中写如下代码即可Application.Lock();
    Application["count"]=(int)Application["count"]+1;
    Application.UnLock();
      

  10.   

    基本实现原理:
    Application.Lock();
    Application["user_sessions"] = (int)Application["user_sessions"] + 1;
    Application.Unlock();
      

  11.   

    在GLOBE里增加一个计数的SESSION就可以实现了...