asp.net中限制用户单位时间请求数

using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;

namespace  WebApplication1
{
    
public   class  RequestCounter
    {
        
private   static  Dictionary < string , RequestCounter >  Counters  =   new  Dictionary < string , RequestCounter > ();
        
public   const   int  MaxRequestCount  =   3 ;
        
public   const   int  ResetSeconds  =   2 ;
        
public   int  CurrentCount {  get ;
            
private   set ; }
        
public   string  UserID {  get set ; }
        
private  DateTime LastResetTime;
        
public   bool  AddCount( )
        {
            DateTime now 
=  DateTime.Now;
            
if  ((now  -  LastResetTime).Seconds  > = ResetSeconds)
            {
                
this .CurrentCount  =   0 ;
                
this .LastResetTime  =  now;
            }
        this .CurrentCount ++ ;
             if  ( this .CurrentCount  < = MaxRequestCount)
                
return   true ;
            
else
                
return   false ;
        }
        
public   static  RequestCounter GetCounter( string  userID)
        {
            
if  (Counters.ContainsKey(userID))
                
return  Counters[userID];
            
else
            {
                Counters[userID] 
=   new  RequestCounter();
                
return  Counters[userID];
            }
        }
    }
}
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;

namespace  WebApplication1
{
    
public   partial   class  _Default : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            RequestCounter counter 
=  RequestCounter.GetCounter( " xhan " );
            
bool  canAccess  =  counter.AddCount( );

            Response.Write(canAccess);
            Response.Write(counter.CurrentCount);

        }
    }
}


你可能感兴趣的:(asp.net)