我只是想知道下面这段代码是如何工作的。
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,但不确定是否能完全理解它。