ASP.NET Core перемещается по двум разным контроллерам в случае исключенияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ASP.NET Core перемещается по двум разным контроллерам в случае исключения

Сообщение Anonymous »

Мне нужно, в исключительных случаях, в зависимости от запроса (пути), перенаправить на контроллер ошибок для ASP.NET Core MVC или на контроллер ошибок для ASP.NET Core Web API.
В промежуточном программном обеспечении я пытаюсь настроить это примерно так:

Код: Выделить всё

app.UseExceptionHandler(new ExceptionHandlerOptions
{
ExceptionHandler = context =>
{
var cultureCode = CultureInfo.CurrentCulture.ToString();
if (context.GetRouteData().Values.ContainsKey(RouteValueKeys.Lang))
cultureCode = context.GetRouteValue(RouteValueKeys.Lang).ToString();

var isApiRequest = context.Request.Path.Value.Contains("/api");

if (isApiRequest)
{
context.Response.Redirect($"/{cultureCode}/api/error");
}
else
{
context.Response.Redirect($"/{cultureCode}/Common/Error/GenericError");
app.UseStatusCodePagesWithReExecute("/Error/Http{0}");
}

return Task.CompletedTask;
}
});
Тогда используйте 2 разных контроллера для ошибки:
MVC:

Код: Выделить всё

[Area("Common")]
public class ErrorController : Controller
{
private readonly ILogger logger;

public ActionResult Http404()
{
var context = HttpContext.Features.Get();
var exception = context?.Error;

logger.LogError(exception, exception?.Message);

return View();
}
}
API:

Код: Выделить всё

[ApiController]
[AllowAnonymous]
[ApiExplorerSettings(IgnoreApi = true)]
public class ApiErrorController : ControllerBase
{
[HttpGet]
[Route("{lang:languageCode}/api/error")]
public IActionResult Error()
{
var context = HttpContext.Features.Get();
var exception = context?.Error;

Response.StatusCode = 400;

return BadRequest(exception.Message);
}
}
В режиме отладки я вижу, что значение isApiRequest истинно (я вызываю его из API), и код выполняется, но никогда не попадает в API контроллер ошибок и в браузере выдало 404.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/785 ... -exception
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»