ASP.NET Web API 控制請求頻率

來源:互聯網
上載者:User

標籤:

參考地址:http://www.cnblogs.com/shanyou/p/3194802.html

安裝nuget包:WebApiContrib

很多的api,例如GitHub’s API 都有流量控制的做法。使用速率限制,以防止在很短的時間量用戶端向你的api發出太多的請求.例如,我們可以限制匿名API用戶端每小時最多60個請求,而我們可以讓更多的經過認證的用戶端發出更多的請求。那麼asp.net webapi如何?這樣的功能呢?在項目WebApiContrib 上面已經有了一個實現:https://github.com/WebApiContrib/WebAPIContrib/blob/master/src/WebApiContrib/MessageHandlers/ThrottlingHandler.cs ,具有良好的可擴充性。

最簡單的方法是使用ThrottlingHandler註冊使用簡單的參數,例如控制每個使用者每小時60個請求:

config.MessageHandlers.Add(new ThrottlingHandler(    new InMemoryThrottleStore(),      id => 60,     TimeSpan.FromHours(1)));
IThrottleStore介面 使用ID +當前的請求數量。InMemoryThrottleStore 只有一個記憶體中儲存,但你可以輕鬆地擴充實現為分布式緩衝或資料庫。還可以輕鬆地自訂ThrottlingHandler的行為,例如我們針對一個ip地址可以更好的進行控制。
config.MessageHandlers.Add(new ThrottlingHandler(               new InMemoryThrottleStore(),              id =>              {                  if (id == "10.0.0.1")                  {                      return 5000;                  }                  return 60;              },              TimeSpan.FromHours(1)));

ASP.NET Web API 控制請求頻率

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.