В моем промежуточном программном обеспечении для пользовательских исключений я хочу обработать исключения и вернуть тот же ресурс с удобным для пользователя сообщением.
E.g Когда Account/Add
выдает SqlException
, я возвращаю Account/Add
ответ с сообщением, которое хранится в TempData
из промежуточного программного обеспечения исключения. я уже
все эти движки вида сделали.
Я нашел этот метод расширения и использование для этой цели, с этим вы можете вернуть все реализации IActionResult
из промежуточного программного обеспечения, большое расширение.
Однако я не смог выяснить, как вернуть свое обычное представление, которое находится в моей папке представлений, например Views/Account/Add
Промежуточное ПО исключений
private readonly RequestDelegate _next;
public ExceptionHandler(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
try
{
await _next.Invoke(context);
}
catch (Exception ex)
{
HandleException(context, ex);
}
}
private void HandleException(HttpContext context, Exception exception)
{
//handle exception, log it and other stuff...
//....
var result = new ViewResult
{
ViewName = context.Request.Path.ToString(),
};
//WithDanger is an extension method writes message to tempdata
result.WithDanger("Error", exception.ToString());
//Extension method
context.WriteResultAsync(result);
}
Это то, что я пытался, но он не работает, как я ожидал, он возвращает пустую страницу, кажется, он не запускает механизм просмотра бритвы для создания моей страницы запроса.
Как я могу заставить мое промежуточное ПО возвращать ViewResult
с моим существующим видом?