2016-05-02 16 views
0

In unserer ASP.NET MVC C# -Webanwendung möchten wir häufig eine generische Unauthorized-Nachricht als JSON-Antwort an AJAX-Aufrufe zurückgeben, wenn der Benutzer eine Authentifizierungsprüfung nicht besteht . Mein erster Gedanke war es auf diese Weise zu tun:Automatisches Bereitstellen von HttpUnauthorizedResult (401-Fehler) default StatusDescription anstelle von Null

return Json(new HttpUnauthorizedResult().StatusDescription); 

Das Problem ist, die StatusDescription Eigenschaft ist null standardmäßig. Es wäre großartig, wenn wir den Konstruktor irgendwie überladen könnten, um diese Eigenschaft zu instanziieren, um irgendeine generische unautorisierte Nachricht zu haben, wenn keine bereitgestellt wird, aber ich kann nicht herausfinden, wie es geht.

Weiß jemand, wie man das umsetzt? Bitte zögern Sie nicht, eine bessere Methode zur Implementierung von HTTP-Fehlermeldungen in AJAX-Aufrufen vorzuschlagen, wenn dies keine gute Methode ist.

Antwort

1

HttpUnauthorizedResult hat einen Konstruktor, der die Beschreibung übernimmt. Man könnte es Msdn

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

verwenden Wenn die Nachricht ist immer die gleiche Sie von HttpUnauthorizedResult erbt können:

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

Ich weiß, dass ich es ausdrücklich jedes Mal zur Verfügung stellen kann, aber wir möchten, dass diese Nachricht nicht zu kopieren, haben jedes Mal, wenn wir es verwenden möchten. Um es automatisch einen Standardwert zu haben, wenn keiner zur Verfügung gestellt wird, ist mein Ziel. –

+0

Sie könnten Ihre eigene Klasse definieren, die von HttpUnauthorizedResult erbt und die Standardnachricht bereitstellt. – ema

1

Sie könnten eine Klasse erstellen, die von HttpUnauthorizedResult und Ketten an den Basisklassenkonstruktor erbt.

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

Dann könnten Sie gerade tun:

return Json(new HttpUnauthorizedResultWithDefaultText());