限制来自客户端的请求数

时间:2019-04-05 09:15:45

标签: c# asp.net-web-api

如果该客户端已经在处理请求,我想从请求中返回。

// Controller

public async Task<IHttpActionResult> GetBarcode(string ticketId)
{
    var customerGuid = Guid.Parse(User.Identity.GetUserId());
    var ticketGuid = Guid.Parse(ticketId);

    return Json(await _service.GetBarcode(customerGuid, ticketGuid));
}

// Service

public async Task<TicketBarcode> GetBarcode(Guid customerId, Guid ticketId)
{

    // if already processing a request with this customerId and ticketId, then return

    // if not, then proceed

它调用了另一个无法处理压力的API。

我正在寻求有关如何实现此目标的建议。如果您需要更多信息,请发表评论。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题;您想要防止用户频繁调用您的api的东西。好吧,有多种方法可以实现它。

您可以使用Radis;它提供了different patterns for Rate limiter,使用它您可以配置速率限制,例如每个IP地址每秒最多十个请求。

另一种直接的方法是使用WebApiThrottle的nuget包。