web-dev-qa-db-ja.com

Asp.net Web Apiが応答ステータスコードを数値に設定しました

Asp.net Web Apiで、StatusCode列挙型ではなく、intまたはstringを使用して応答のステータスコードを設定するにはどうすればよいですか?

私の場合、ステータスコード422「Unprocessable Entity」で検証エラーを返したいのですが、その列挙子がありません。

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

任意のintをHttpStatusCodeにキャストできます。

response.StatusCode = (HttpStatusCode)422;

あなたもすることができます:

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

私はこれのためにクラスを作成することになりました:

  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;
10
Cirem

HttpStatusCodeを整数に変換します。

response.StatusCode = Convert.ToInt32(HttpStatusCode.UnprocessableEntity)
0
anil shrestha