如果该客户端已经在处理请求,我想从请求中返回。
// 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。
我正在寻求有关如何实现此目标的建议。如果您需要更多信息,请发表评论。
答案 0 :(得分:0)
如果我正确理解了您的问题;您想要防止用户频繁调用您的api的东西。好吧,有多种方法可以实现它。
您可以使用Radis;它提供了different patterns for Rate limiter,使用它您可以配置速率限制,例如每个IP地址每秒最多十个请求。
另一种直接的方法是使用WebApiThrottle
的nuget包。