简体   繁体   中英

Asp.net Web Api set response status code to number

In Asp.net Web Api, how do I set the status code of my response using an int or string, not the StatusCode enum?

In my case, I'd like to return validation errors with status code 422, "Unprocessable Entity", but there's no enumerator for it.

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

You can cast any int to a HttpStatusCode.

response.StatusCode = (HttpStatusCode)422;

You can also:

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

I ended up creating a class for this:

  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;
        }
    }

which can be used like this:

response.StatusCode = HttpStatusCodeAdditions.UnprocessableEntity;

将您的HttpStatusCode转换为整数:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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