回覆列表
  • 1 # 挨踢大仙

    public class FrequencyControler {

    /// <summary>

    /// 訪問控制器名稱,用於區分其它控制器,支援多個控制器

    /// </summary>

    private string Name { get; set; }

    /// <summary>

    /// 限定時長

    /// </summary>

    private int Seconds { get; set; }

    /// <summary>

    /// 限定次數

    /// </summary>

    private int Times { get; set; }

    public readonly int MAX_TIMES = 100;

    #region 私有方法

    private string SessionNameDatelist {

    get { return String.Format("fc.{0}.datelist", Name); }

    }

    private string SessionNameDatepos {

    get { return String.Format("fc.{0}.datepos", Name); }

    }

    /// <summary>

    /// 取得用於儲存每次訪問時間點的陣列(做佇列用)

    /// </summary>

    /// <returns></returns>

    private long[] GetDateList() {

    if (HttpContext.Current.Session[SessionNameDatelist] == null) {

    HttpContext.Current.Session[SessionNameDatelist] = new long[MAX_TIMES];

    }

    return (long[])HttpContext.Current.Session[SessionNameDatelist];

    }

    /// <summary>

    /// 獲取時間記錄位置,相當於當前佇列位置

    /// </summary>

    /// <returns></returns>

    private int GetDatepos() {

    if (HttpContext.Current.Session[SessionNameDatepos] == null) {

    HttpContext.Current.Session[SessionNameDatepos] = 0;

    }

    return (int)HttpContext.Current.Session[SessionNameDatepos];

    }

    /// <summary>

    /// 設定時間記錄位置,相當於當前佇列位置

    /// </summary>

    /// <param name="pos"></param>

    private void SetDatepos(int pos) {

    HttpContext.Current.Session[SessionNameDatepos] = pos;

    }

    #endregion

    /// <summary>

    /// 構造訪問檢測器,限定指定時間內最多請求次數

    /// </summary>

    /// <param name="name">名稱</param>

    /// <param name="seconds">限定時間範圍(秒數)</param>

    /// <param name="times">限定次數</param>

    public FrequencyControler(string name, int seconds, int times) {

    Name = name;

    Seconds = seconds;

    Times = times;

    if (times > MAX_TIMES) throw new Exception("限定次數設定值超出上限!");

    }

    /// <summary>

    /// 記錄一次訪問,在時間點陣列的下一個位置(按最大長度迴圈覆蓋儲存)

    /// </summary>

    pub

  • 中秋節和大豐收的關聯?
  • 開始備孕了,想給自己選一些好的媽媽奶粉備著,什麼牌子的媽媽奶粉好呢?