Мне просто интересно узнать, как работает этот фрагмент кода ниже.
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, но не уверен, что получил его полностью.