Asp.net Web Apiで、StatusCode列挙型ではなく、intまたはstringを使用して応答のステータスコードを設定するにはどうすればよいですか?
私の場合、ステータスコード422「Unprocessable Entity」で検証エラーを返したいのですが、その列挙子がありません。
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)