В методе Startup.cs вам нужно вызвать ExceptionHandlerMiddleware, как показано ниже.
app.UseMiddleware(typeof(ExceptionHandlerMiddleware));
создайте класс промежуточного программного обеспечения и напишите код ниже
public class ExceptionHandlerMiddleware
{
private readonly RequestDelegate next;
public ExceptionHandlerMiddleware(RequestDelegate next)
{
this.next = next;
}
public async Task Invoke(HttpContext context)
{
try
{
//Write you logic
}
catch (Exception ex)
{
await HandleExceptionAsync(context, ex);
}
}
private static async Task HandleExceptionAsync(HttpContext context, Exception exception)
{
context.Response.StatusCode = 500;
if (IsRequestAPI(context))
{
//when request api
context.Response.ContentType = "application/json";
await context.Response.WriteAsync(JsonConvert.SerializeObject(new
{
State = 500,
message = exception.Message
}));
}
else
{
//when request page
context.Response.Redirect("/Home/Errorpage");
}
}
}
Промежуточное программное обеспечение «протекает через воду» до тех пор, пока либо все не будет выполнено, либо одно не остановит выполнение (в случае обработки наших исключений мы напишем наше, чтобы оно прекратило выполнение. Подробнее об этом позже).
Первым делом, передаваемым на ваше промежуточное программное обеспечение, является делегат запроса. Это делегат, который берет текущий объект HttpContext и выполняет его. Ваше промежуточное ПО сохраняет его при создании и использует его на шаге Invoke ().
Invoke () - то, где работа сделана. Все, что вы хотите сделать с запросом / ответом как часть вашего промежуточного программного обеспечения, делается здесь. Некоторым другим использованием промежуточного программного обеспечения может быть авторизация запроса на основе заголовка или внедрение заголовка в запрос или ответ. Дополнительные примеры можно найти в документации Middleware.