Подтвердить что ты не робот

Asp.net Web Api устанавливает код состояния ответа на номер

В Asp.net Web Api, как мне установить код состояния моего ответа, используя int или string, а не перечисление StatusCode?

В моем случае я хотел бы возвратить ошибки проверки с кодом состояния 422, "Непроцессная сущность", но для этого нет перечислителя.

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

Ответ 1

Вы можете использовать любой int для HttpStatusCode.

response.StatusCode = (HttpStatusCode)422;

Вы также можете:

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

Ответ 2

Я создал класс для этого:

  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;