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();