2016-08-11 2 views
0

Ich habe viele Methoden versucht, aber immer noch scheitern, es zu machen. Ich möchte nur eine 404/500 zeigen, wenn die Anfrage ungültig ist.MVC Simple Error Handle BadRequest

Eg. Es gibt keine Benutzer-ID = 100, wenn jemand diese Anfrage macht, sollte 404 zurückgegeben werden. Auf der anderen Seite, Wurf 500, wenn ein Serverfehler aufgetreten ist.

Ich möchte dieses Verhalten ganze Apps anwenden.

public ActionResult EditUser(int Id) 
    { 
     var db = new UserDbContext(); 
     var usr = db.Users.Where(a => a.Id == Id).SingleOrDefault(); 
     if (usr == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound, "User not found"); 
     return View(usr); 
    } 

mit webconfig in system.web

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/General"> 
    <error statusCode="404" redirect="~/NotFound" /> 
    <error statusCode="403" redirect="~/BadRequest" /> 
</customErrors> 

und in system.webServer

<httpErrors existingResponse="PassThrough"></httpErrors> 

Versuchte viele Kombinations Art und Weise, kann nicht damit es funktioniert. Das Ergebnis, das ich bekomme, ist eine leere Seite, dann Browser-Konsole mit dem 404/500 Fehler. Aber ich möchte es auf der Seite zeigen.

Jemand könnte bitte meinen Fehler aufzeigen.

throw new HttpException(404, "Some description");: Danke

+0

prüfen verwenden, wenn es wegen der web.config http ist: // Stackoverflow. com/questions/4483849/default-redirect-for-error-404 –

Antwort

1

können Sie

throw new HttpException(404, "HTTP/1.1 404 Not Found"); 

oder

return HttpNotFound(); 

oder geben Fehleransicht Form freigegebenen Ordner

return View("NotFound"); 
0

können Sie

public ActionResult EditUser(int Id) 
    { 
     var db = new UserDbContext(); 
     var usr = db.Users.Where(a => a.Id == Id).SingleOrDefault(); 
     if (usr == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound, "User not found"); 
     Response.StatusCode = 400; 
     return View(usr); 
    } 
0

Nur werfen/Return HTTP Ausnahmen wie folgt hinzufügen.

Oder return new HttpNotFoundResult("optional description"); für ASP.NET MVC 3 und höher.

Oder return HttpNotFound("I did not find message goes here"); für MVC 4 und höher.

+0

Ich mag den Code, den Sie zeigen, aber das Ergebnis ist das gleiche, das weiße leere Fenster und c Onsole Printe 404 nicht gefunden. Ich habe nachgedacht, muss etwas falsch an meiner Konfiguration sein. Aber ich weiß nicht wo. –

+0

@ EricK.Watch die zweite Antwort http://stackoverflow.com/questions/553922/custom-asp-net-mvc-404-error-page – Raskayu

Verwandte Themen