39

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

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

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

3 に答える 3

47

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

response.StatusCode = (HttpStatusCode)422;

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

HttpResponseMessage response = Request.CreateResponse((HttpStatusCode)422, "Unprocessable Entity");
于 2013-02-19T19:47:21.130 に答える
11

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

  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;
于 2015-02-04T19:45:04.430 に答える
0

HttpStatusCodeを整数に変換します。

response.StatusCode = Convert.ToInt32(HttpStatusCode.UnprocessableEntity)
于 2019-12-04T16:50:35.803 に答える