Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异常处理ASP.NET核心MVC 6_C#_Asp.net Mvc_Error Handling_Asp.net Core Mvc - Fatal编程技术网

C# 异常处理ASP.NET核心MVC 6

C# 异常处理ASP.NET核心MVC 6,c#,asp.net-mvc,error-handling,asp.net-core-mvc,C#,Asp.net Mvc,Error Handling,Asp.net Core Mvc,我目前的配置: public void ConfigureDevelopment(IApplicationBuilder app, ILoggerFactory loggerFactory) { //app.UseDeveloperExceptionPage(); //app.UseDatabaseErrorPage(); app.UseStatusCodePagesWithRedirects("/error/{0}"); app.UseExceptionHan

我目前的配置:

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

    app.UseStatusCodePagesWithRedirects("/error/{0}");
    app.UseExceptionHandler();
    Configure(app);
}
我有一个控制器,它应该在服务器注册任何异常时执行。当我执行“error/test”时,我会按照预期重定向到“error/500”。如果我手动执行“error/exception”,我会得到server500本机错误,而不是我的

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");
    }
}
知道在操作中抛出异常时如何将“error/exception”重定向到“error/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);
    }

} 
可能有用的是: