background image

            fileStream = File.Open(Server.MapPath("counts.text"),FileMode.OpenOrCreate);

//

文件不存在,创建文件

            reader = 

new

 StreamReader(fileStream);

//要读取的完整路径

            Application["AllGuests"] = Convert.ToInt32(reader.ReadLine()); 

//从当前流中读取

一行字符并将数据作为字符串返回

            reader.Close();

//关闭流

        }
 
        

protected

 

void

 Session_Start(Object sender, EventArgs e)

//当用户访问网站时,在

线用户+1,总访问数+1

        {
            Application.Lock();

//同步,避免同时写入

            
            Application["CurrentGuests"] =(

int

)Application["CurrentGuests"]+ 1;

//总在线用户

            Application["AllGuests"] =(

int

)Application["AllGuests"]+ 1;

//访问网站的总用户数

            fileStream = 

new

 FileStream(Server.MapPath("counts.text"),FileMode.OpenOrCre

ate,FileAccess.ReadWrite);

//

            writer = 

new

 StreamWriter(fileStream);

//实现一个写入流,使其以一种特定的编码

向流中写入字符

            writer.WriteLine(Application["AllGuests"].ToString());

//把访问网站的总用户数再次

写入到文件

            writer.Close();

//关闭写入流

            Application.UnLock();

//同步结束

        }
        

protected

 

void

 Session_End(Object sender, EventArgs e)

//当前用户退出网站时,在

线用户数量-1,

        {
            Application.Lock();
            Application["CurrentGuests"] =(

int

)Application["CurrentGuests"] - 1;

//总在线用户

数量-1

            Application.UnLock();    
        }
    (2) WebForm1.aspx
    

private

 

void

 Page_Load(

object

 sender, System.EventArgs e)

        {
            

this

.Label1.Text = "正在访问站点的用户数:" + Application["CurrentGuests"].ToSt

ring();    
            

this

.Label2.Text ="访问过站点的总用户数:" + Application["AllGuests"].ToString()

;
        }

 

2.Session 对象

      Session 用于保存每个用户的专用信息.

每个客户端用户访问时,服务器都为每个

用户分配一个唯一的会话 ID(Session ID)

 . 她的生存期是用户持续请求时间再加上一段

时间(一般是 20 分钟左右).Session 中的信息保存在 Web 服务器内容中,保存的数据量可
大可小.当 Session 超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程

序后它仍然在内存中保持一段时间,因此使用 Session 对象使保存用户数据的方法效率很
低.对于小量的数据,使用 Session 对象保存还是一个不错的选择.使用 Session 对象保存信

息的代码如下:

//存放信息

Session[

"key"]="value

"

//读取数据

string

 UserName=Session["key"].ToString();