У меня есть приложение, которое использует ASP.NET Core MVC в качестве клиента и ASP.NET Core WEB API на серверной части.Я использую вспомогательный метод, чтобы помочь мне отправить все запросы к API и получить ответ.Я не могу понять, как обрабатывать 403 ответа от API в одном месте (используя что-то вроде промежуточного программного обеспечения или фильтра).
Я не хочу проверять код ошибки при каждом действии контроллера.Я хочу знать, можем ли мы перехватить ответ между строками 1 и 2 в приведенном ниже коде.
var response = httpClient.SendRequest(request);
if(response.StatusCode == StatusCodes.Status403Forbidden) {
// redirect to some page.
}
Я попытался добавить промежуточное программное обеспечение (как показано ниже), чтобы сделать то же самое и включено в началекласса startup.cs, но ответ в контексте всегда равен 500, а не правильный код ошибки (в данном случае 403).
public async Task Invoke(HttpContext context)
{
if (context.Response.StatusCode == StatusCodes.Status403Forbidden)
{
context.Response.Redirect("Page to redirect");
}
await _next.Invoke(context);
}
Всякий раз, когда отправляется код ошибки (например, запрещен 403)из API я хотел бы перенаправить пользователей на определенную страницу из одного места и не желать проверять код состояния в каждом действии.