8

HttpResponseExceptionこのスクリーンキャスト (約 1 分) で説明されているように、私は上げようとしています。

throw new HttpResponseException(HttpStatusCode.Unauthorized);

ただし、次のエラーがスローされるため、アプリはコンパイルされません。

The best overloaded method match for 'System.Web.Http.HttpResponseException.HttpResponseException(System.Net.Http.HttpResponseMessage)' has some invalid arguments

msdn のドキュメントには、HttpResponseMessage列挙型を受け入れるコンストラクターがあると書かれています。http://msdn.microsoft.com/en-us/library/hh835324%28v=vs.108%29.aspx

私は何が欠けていますか?

ありがとう

4

2 に答える 2

11

RC を使用している場合、これは変更されています。試す:

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));
于 2012-06-05T21:41:14.510 に答える
6

この問題に遭遇したばかりなので、smlync から提供された回答を見てうれしく思いますが、この場合の API がより冗長になっているのを見るのは残念です! 私見、以下は「巨大な」という説明に傾いています。特に、この例外(とりわけ)がすべてのコントローラーを何度も満たす場合:

    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));

私は代わりにこれを使用しているかもしれません。

    throw new Http404NotFoundException();

以下を任意の場所に配置します。

public class Http404NotFoundException : HttpResponseException
{
    public Http404NotFoundException()
        : base(new HttpResponseMessage(HttpStatusCode.NotFound)) { }
}

これは、愛されている ASP.NET WebApi チームにとってよりクリーンではないでしょうか? このステータス コードのみの場合は、他の非常に一般的なステータス コードに相当するものをいくつか投入することもできます。

于 2012-06-06T17:33:10.647 に答える