5

私のMvcApiコントローラーでは、ユーザーを認証できない場合、HttpException 401をスローします。ただし、RestSharpクライアントはこれをHttp500ステータスコードに変換しているようです。

MvcコントローラーからHttpExceptionsをスローできるようにし、RestSharpクライアントにStatusCodeプロパティの元のエラーを保持させたい。

また、サーバーが起動していない場合、RestSharpクライアントが要求を行うと、応答のステータスコードは0、応答コードはErrorになります。RestSharpは代わりに404httpエラーコードを返すべきではありませんか?

私が本当に必要としているのは、RestSharpがHttpCodesとどのように連携するかについてのドキュメントです。

私のAPIコントローラーのコードで更新されました:

throw new HttpException((int)HttpStatusCode.Unauthorized, AuthenticationError);
4

4 に答える 4

12

本当に401をクライアントに返すことを確認しましたか?ASP.NET MVCで、奇妙なエラー処理が行われることがありました。

HttpUnauthorizedResult代わりに返品してみてください。MSDNドキュメント

于 2012-01-19T12:23:08.893 に答える
4

私はこの問題を自分で調査することができました。フォーム認証はWebアプリで設定されます。つまり、コントローラーからHttpUnauthorizedResultが返されると、MVCが起動し、ログインページにリダイレクトされます。これは、エラーが発生しなかったと想定してクライアントの効果があります。

aspnet.suppressformsredirect nugetパッケージを使用してこれを解決し、認証の応答に抑制フラグを追加しました。

于 2012-02-06T14:45:45.440 に答える
4

Here are two ways to return a 401 in MVC.

return new HttpUnauthorizedResult("Unauthorized");

or

return new HttpStatusCodeResult(401);
于 2016-10-19T10:32:25.677 に答える
2

ラメ、ラメ、ラメ、401を返すにはNuGetパッケージをダウンロードする必要があります!私の回避策は、403Forbiddenで説明を返すことです。

throw new HttpException((int)HttpStatusCode.Forbidden, 
  "Please log in as user " + UserId + " and try again.");

Not semantically correct, but is less work, less ongoing maintenance, and less risk.

于 2015-05-07T16:40:50.383 に答える