});
3、新建一个类,重写方法。(这里的类才是正确的)
public class CustomThrottlingFilter: ThrottlingFilter
{
/// <summary>
/// Sets the indentity.
/// </summary>
/// <param name="request">The request.</param>
/// <returns>RequestIdentity.</returns>
protected override RequestIdentity SetIdentity(HttpRequestMessage request)
{
var sessionId = string.Empty;
try
{
var requestCookie = request.Headers.GetCookies().FirstOrDefault();
if (requestCookie != null)
{
foreach (var item in requestCookie.Cookies.Where(item => item.Name == "Session_Id"))
{
sessionId = item.Value;
break;
}
}
}
catch (Exception)
{
sessionId = string.Empty;
}
return new RequestIdentity()
{
ClientKey = string.IsNullOrWhiteSpace(sessionId) ? sessionId : "anon",
ClientIp = base.GetClientIp(request).ToString(),
Endpoint = request.RequestUri.AbsolutePath.ToLowerInvariant()
};
}
}
4、对需要控制的接口或者控制器加上头标示
[EnableThrottling(PerMinute = 12)]//控制访问频率,每分钟最多12次