繁体   English   中英

Asp.net Web Api 将响应状态代码设置为数字

[英]Asp.net Web Api set response status code to number

在 Asp.net Web Api 中,如何使用 int 或 string 而不是 StatusCode 枚举设置响应的状态代码?

就我而言,我想返回状态代码为 422,“不可处理的实体”的验证错误,但没有枚举器。

HttpResponseMessage response = Request.CreateResponse();
response.StatusCode = HttpStatusCode.UnprocessableEntity; //error, not in enum

您可以将任何 int 转换为 HttpStatusCode。

response.StatusCode = (HttpStatusCode)422;

你也可以:

HttpResponseMessage response = Request.CreateResponse((HttpStatusCode)422, "Unprocessable Entity");

我最终为此创建了一个类:

  public class HttpStatusCodeAdditions
    {
        public const int UnprocessableEntityCode = 422;
        public static HttpStatusCodeAdditions UnprocessableEntity = new HttpStatusCodeAdditions(UnprocessableEntityCode);

        private HttpStatusCodeAdditions(int code)
        {
            Code = code;
        }
        public int Code { get; private set; }

        public static implicit operator HttpStatusCode(HttpStatusCodeAdditions addition)
        {
            return (HttpStatusCode)addition.Code;
        }
    }

可以这样使用:

response.StatusCode = HttpStatusCodeAdditions.UnprocessableEntity;

将您的HttpStatusCode转换为整数:

response.StatusCode = Convert.ToInt32(HttpStatusCode.UnprocessableEntity)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM