2017-02-01 7 views
2

Meine derzeitige Konfiguration:Exceptions ASP .NET-Core MVC 6

public void ConfigureDevelopment(IApplicationBuilder app, ILoggerFactory loggerFactory) 
{ 
    //app.UseDeveloperExceptionPage(); 
    //app.UseDatabaseErrorPage(); 

    app.UseStatusCodePagesWithRedirects("/error/{0}"); 
    app.UseExceptionHandler(); 
    Configure(app); 
} 

Ich habe diesen Controller, sollte ausgeführt werden, wenn der Server alle Ausnahmen registrieren. Wenn ich "error/test" ausfühle, werde ich wie erwartet zu "error/500" weitergeleitet. Wenn ich "Fehler/Ausnahme" manuell ausführe, erhalte ich den nativen Fehler des Servers 500, nicht meinen.

public class ErrorController : Controller 
{ 
    [Route("error/404")] 
    public ActionResult Error404() 
    { 
     return View("404"); 
    } 

    [Route("error/500")] 
    public ActionResult Error500() 
    { 
     return View("500"); 
    } 

    [Route("error/test")] 
    public ActionResult Test() 
    { 
     return new StatusCodeResult(500); 
    } 

    [Route("error/exception")] 
    public ActionResult Exception() 
    { 
     throw new Exception("Should redirect to error/500"); 
     return Content("nope"); 
    } 
} 

Jede Idee, wie „Fehler/Ausnahme“ auf „Fehler/500“ umleiten, wenn Ausnahme in Aktionen ausgelöst wird?

Vielen Dank.

+0

könnte nützlich sein: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling – Nkosi

Antwort

1

Sicher, kein Problem. verwenden app.UseExceptionHandler("/error/500"); und dann wird diese nicht benötigt mehr:

[Route("error/exception")] 
public ActionResult Exception() 
{ 
    throw new Exception("Should redirect to error/500"); 
    return Content("nope"); 
} 
0

Ich glaube, Sie mehrere Routen auf eine Aktion angeben können, so dass Sie die „Ausnahme“ Aktion nicht brauchen, nur hinzuzufügen Route ist auf der 500:

public class ErrorController : Controller 
{ 
    [Route("error/404")] 
    public ActionResult Error404() 
    { 
     return View("404"); 
    } 

    [Route("error/500")] 
    [Route("error/exception")] 
    public ActionResult Error500() 
    { 
     return View("500"); 
    } 

    [Route("error/test")] 
    public ActionResult Test() 
    { 
     return new StatusCodeResult(500); 
    } 

}