使用Global.asax文件统计网站总访问量

在不增加数据库字段的情况下,来统计网站的总访问量的方法,可通过Global.asax文件来处理! 

以下讲解其实现方法,不过,相信应该很多人都写过的了! 

 

思路很简单。

通过文件流操作文本文件,当应用程序一加载,就读取文本文件中内容的最后一行,可通过 Peek!=-1的方法来判断是否是末行;

然后在Session会话启动时, 在读取到的内容上加1,同时当应用程序关闭时,写进文件,即可。

 

关键技术:文件操作、Application对象的应用

步骤如下: 

1.在站点中创建一个文本文件Count.txt,用于存放访问数量;

2.创建 Global.asax 全局应用程序文件;

3.引入组件:

 代码

<% @ Import Namespace = " System "   %>
<% @ Import Namespace = " System.Collections "   %>
<% @ Import Namespace = " System.ComponentModel  "   %>
<% @ Import Namespace = " System.Web "   %>
<% @ Import Namespace = " System.Web.SessionState "   %>
<% @ Import Namespace = "  System.IO  "   %>

 

 

4.应用程序启动时,读取访问量;

代码:

 代码

         int  count  =   0 ;
        StreamReader srd;
        
// 取得文件的实际路径
         string  file_path  =  Server.MapPath( " counter.txt " );

        
// 打开文件进行读取
        srd  =  File.OpenText(file_path);
        
while  (srd.Peek()  !=   - 1 )
        {
            
string  str  =  srd.ReadLine();
            count  =   int .Parse(str);

        }
        srd.Close();
        
object  obj  =  count;
        
// 将从文件中读取的网站访问量存放在Application对象中
        Application[ " counter " =  obj;

 

 

5.新会话启动时,获取Application对象中的数据信息并在其基础上加1

 代码:

 代码

        Application.Lock();
 
        
int  Stat  =   0 ;
        
// 获取Application对象中保存的网站总访问量
        Stat  =  ( int )Application[ " counter " ];
        Stat  +=   1 ;
        
object  obj  =  Stat;
        Application[ " counter " =  obj;

        
// 将数据记录写入文件
         string  file_path  =  Server.MapPath( " counter.txt " );
        StreamWriter srw  =   new  StreamWriter(file_path,  false );
        srw.WriteLine(Stat);
        srw.Close();

        Application.UnLock();

 

 

6.应用程序关闭时,将更改的访问量存放到文件中。

代码:

代码
         int  Stat  =   0 ;
        Stat  =  ( int )Application[ " counter " ];
        
string  file_path  =  Server.MapPath( " counter.txt " );
        StreamWriter srw  =   new  StreamWriter(file_path,  false );
        srw.WriteLine(Stat);
        srw.Close();

 

 

 ========================================

完整代码:

 

代码
<% @ Application Language = " C# "   %>
<% @ Import Namespace = " System "   %>
<% @ Import Namespace = " System.Collections "   %>
<% @ Import Namespace = " System.ComponentModel  "   %>
<% @ Import Namespace = " System.Web "   %>
<% @ Import Namespace = " System.Web.SessionState "   %>
<% @ Import Namespace = "  System.IO  "   %>

< script RunAt = " server " >

     
    
void  Application_Start( object  sender, EventArgs e)
    {
        
//  在应用程序启动时运行的代码
         int  count  =   0 ;
        StreamReader srd;
        
// 取得文件的实际路径
         string  file_path  =  Server.MapPath( " counter.txt " );
        
// 打开文件进行读取
        srd  =  File.OpenText(file_path);
        
while  (srd.Peek()  !=   - 1 )
        {
            
string  str  =  srd.ReadLine();
            count 
=   int .Parse(str);

        }
        srd.Close();
        
object  obj  =  count;
        
// 将从文件中读取的网站访问量存放在Application对象中
        Application[ " counter " =  obj;
      
    }

    
void  Application_End( object  sender, EventArgs e)
    {
        
//   在应用程序关闭时运行的代码
         int  Stat  =   0 ;
        Stat 
=  ( int )Application[ " counter " ];
        
string  file_path  =  Server.MapPath( " counter.txt " );
        StreamWriter srw 
=   new  StreamWriter(file_path,  false );
        srw.WriteLine(Stat);
        srw.Close();

    }

    
void  Application_Error( object  sender, EventArgs e)
    {
        
//  在出现未处理的错误时运行的代码

    }

    
void  Session_Start( object  sender, EventArgs e)
    {
        
//  在新会话启动时运行的代码
        Application.Lock();
        
// 数据累加
         int  Stat  =   0 ;
        
// 获取Application对象中保存的网站总访问量
        Stat  =  ( int )Application[ " counter " ];
        Stat 
+=   1 ;
        
object  obj  =  Stat;
        Application[
" counter " =  obj;
        
// 将数据记录写入文件
         string  file_path  =  Server.MapPath( " counter.txt " );
        StreamWriter srw 
=   new  StreamWriter(file_path,  false );
        srw.WriteLine(Stat);
        srw.Close();
        Application.UnLock();

    }

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

    }
       
</ script >

 

 

 

你可能感兴趣的:(global)