私のアプリケーションから適切なHTTPコードと応答を返そうとしていますが、苦労しています。特定のHTTP応答を返す2つの方法があるようです。空の200応答を返すWebAPIアクションメソッドでHttpResponseExceptionをスローする
私はそれに対処したい方法がHttpResponseException
を投げることである:
public Information Get(int apiKey)
{
if (!_users.Authenticate(apiKey))
{
var response = new HttpResponseMessage();
response.StatusCode = (HttpStatusCode)401;
response.ReasonPhrase = "ApiKey invalid";
throw new HttpResponseException(response);
}
return _info.Get();
}
しかし、私が見る私はこれを行う応答は、単に空200応答であります!
また、あなたはまた、このようなHttpResponseMessage
を返すために、あなたのアクションメソッドのシグネチャを変更することができるようだ:
public HttpResponseMessage Get()
{
if (!_users.Authenticate(apiKey))
{
return Request.CreateResponse((HttpStatusCode) 401, "ApiKey invalid");
}
return Request.CreateResponse((HttpStatusCode) 200, _info.Get());
}
私はそれを助けることができる場合、私は本当に私は多くのだろう、これを行うにはしたくありませんむしろ返すタイプは、毎回HttpResponseMessage
でラップするのではなく、取り出すことを試みているオブジェクトです。
最初の方法が、メッセージが表示されている401の代わりに、空の200を返す理由がありますか?
私は最後に例外を処理するフィルターを使用して終了しました。そのmsdnの記事に向かって私を指してくれました – jcvandan