【问题标题】:Limit number of requests from client限制来自客户端的请求数
【发布时间】:2019-04-05 18:59:58
【问题描述】:

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

// 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。

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

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    相关资源
    最近更新 更多