簡體   English   中英

異常處理 ASP .NET Core MVC 6

[英]Exception handling ASP .NET Core MVC 6

我現在的配置:

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

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

我有這個應該在服務器注冊任何異常時執行的控制器。 當我執行“錯誤/測試”時,我按預期重定向到“錯誤/500”。 如果我手動執行“錯誤/異常”,我會收到服務器 500 本機錯誤,而不是我的。

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");
    }
}

知道如何在操作中拋出異常時將“錯誤/異常”重定向到“錯誤/500”嗎?

謝謝你。

好沒問題。 使用app.UseExceptionHandler("/error/500"); 然后這不再需要了:

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

我相信您可以在一個操作上指定多個路由,因此您不需要“異常”操作,只需將它的路由添加到 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);
    }

} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM