在C# Web API中限制一次单用户的GET/POST请求,可以通过以下步骤实现:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false)]
public class RateLimitAttribute : ActionFilterAttribute
{
// 在这里实现限制逻辑
}
public override void OnActionExecuting(HttpActionContext actionContext)
{
var request = actionContext.Request;
var user = request.GetOwinContext().Authentication.User; // 获取当前用户
// 使用缓存或计数器记录用户请求次数
var cacheKey = $"RequestCount:{user.Identity.Name}";
var requestCount = Cache.Get<int>(cacheKey);
requestCount++;
Cache.Set(cacheKey, requestCount, TimeSpan.FromMinutes(1)); // 设置时间窗口为1分钟
// 检查请求次数是否超过限制
if (requestCount > 10) // 假设限制为每分钟最多10次请求
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.TooManyRequests)
{
Content = new StringContent("请求次数超过限制")
};
return;
}
base.OnActionExecuting(actionContext);
}
[RateLimit]
public IHttpActionResult Get()
{
// 处理GET请求
}
[RateLimit]
public IHttpActionResult Post()
{
// 处理POST请求
}
通过以上步骤,就可以在C# Web API中限制一次单用户的GET/POST请求。当用户的请求次数超过限制时,将返回一个HTTP 429 Too Many Requests响应。
请注意,以上示例仅为演示目的,实际应用中可能需要根据具体需求进行适当调整和优化。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云