2016-05-02 1 views
0

ASP.NET MVC C#Webアプリケーションでは、ユーザーが何らかの種類の認証チェックに失敗した場合にAJAX呼び出しに対する汎用のUnauthorizedメッセージをJSON応答として返すことがよくあります。自動的にHttpUnauthorizedResult(401エラー)nullの代わりにデフォルトのStatusDescriptionを提供します

return Json(new HttpUnauthorizedResult().StatusDescription); 

問題があり、StatusDescriptionプロパティはデフォルトでnullです:私の最初に考えたのは、このようにそれを行うことでした。それが何も提供されていない場合、いくつかの一般的な不正なメッセージを持つために、このプロパティをインスタンス化するために何らかの形でコンストラクタをオーバーロードすることができればそれは素晴らしいですが、私はそれを行う方法を見つけることができません。

これを実装する方法を知っている人はいますか?これが良い方法でない場合は、AJAX呼び出しでHttpエラーメッセージを実装するより良い方法を提案してください。

答えて

1

HttpUnauthorizedResultには、説明を取るコンストラクタがあります。あなたはそれがMsdn

return Json(new HttpUnauthorizedResult("token not found...")); 

メッセージは常にあなたがHttpUnauthorizedResultから継承できるのと同じである場合に使用することができます

public class MyHttpUnauthorizedResult : HttpUnauthorizedResult 
{ 
    public MyHttpUnauthorizedResult() : base("token not found") {} 
} 
+0

を私は明示的にするたびにそれを提供することができます知っているが、我々は、このメッセージに、我々はそれを使用するたびにコピーする必要がないようにしたいと思います。何も提供されていなければ自動的にデフォルト値を持つようにするのが私の目標です。 –

+0

HttpUnauthorizedResultを継承し、デフォルトのメッセージを提供する独自のクラスを定義できます。 – ema

1

あなたは、基本クラスのコンストラクタにHttpUnauthorizedResultとチェーンを継承するクラスを作成することができます。

public class HttpUnauthorizedWithDefaultText : HttpUnauthorizedResult 
{ 
    public HttpUnauthorizedWithDefaultText() : base("Some default text") 
    { 
    } 
} 

は、その後、あなただけ行うことができます:

return Json(new HttpUnauthorizedResultWithDefaultText());