从ActionFilterAttribute返回自定义HTTP代码

use*_*797 5 asp.net asp.net-web-api asp.net-web-api2

我使用下面的代码来限制我的ASP.NET Web Api:

public class Throttle : ActionFilterAttribute
{
    public override async Task OnActionExecutingAsync(HttpActionContext context, CancellationToken cancellationToken)
    {
            // ...
            if (throttle)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Conflict));
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法返回错误代码429,因为它不在HttpStatusCode枚举中.有没有办法返回自定义错误代码?

sat*_*ish 7

我在这里发现了这个.

var response = new HttpResponseMessage
  {
     StatusCode = (HttpStatusCode)429,
     ReasonPhrase = "Too Many Requests",
     Content = new StringContent(string.Format(CultureInfo.InvariantCulture, "Rate                       limit reached. Reset in {0} seconds.", data.ResetSeconds))
  };

    response.Headers.Add("Retry-After", data.ResetSeconds.ToString(CultureInfo.InvariantCulture));
    actionContext.Response = response;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助