UseExceptionHandler保存上下文并重定向到控制器

时间:2019-06-18 10:13:58

标签: c# asp.net asp.net-core .net-core

我只是想知道下面这段代码是如何工作的。

app.UseExceptionHandler("/Home/Error");

public class HomeController : Controller {
   public IActionResult Error() {
        // Im able to retrieve the error and the user context
        var ctx = HttpContext.Features.Get<IExceptionHandlerFeature>();
   }
}

但是如果我已经使用委托实现了相同的

app.UseExceptionHandler(a => a.Run(async context => {
    context.Response.Redirect("/home/error");
}

public class HomeController : Controller {
   public IActionResult Error() {
        // I get null
        // What logic do I need to put to behave it like the above one
        var ctx = HttpContext.Features.Get<IExceptionHandlerFeature>();
   }
}

我知道这是因为302重定向,但是app.UseExceptionHandler("/Home/Error"); 能够做到这一点,它如何能够使用不同的控制器重新执行请求。任何帮助是极大的赞赏。

此外,我已经遍历了源代码https://github.com/aspnet/AspNetCore/blob/master/src/Middleware/Diagnostics/src/ExceptionHandler/ExceptionHandlerExtensions.cs,但不确定是否能完全理解它。

0 个答案:

没有答案