Я хочу создать промежуточное программное обеспечение, которое обрабатывает исключения, но разные запросы к контроллеру API и к бритвенным страницам / mvc. В промежуточном программном обеспечении у меня есть только context.Request.Path url и я хочу «найти» контроллер (или страницу), которому назначено обрабатывать запрос, затем проанализировать информацию о его типе и принять решение.
Примерно так:
MyExceptionHandlerMiddleware{
public async Task Invoke(HttpContext context)
{
try
{
await _next(context);
}
catch (Exception ex)
{
var path = context.Request.Path;
var isApiCall = ... ????
if ( isApiCall )
{
var json = GetJson(ex);
wait context.Response.WriteAsync(json); // return json
}
else {
await _options.ExceptionHandler(context); // return the page
}
}
}
}
Проблема в том, что на данном этапе кажется, что регулярная информация о маршруте недоступна. Как получить информацию о типе контроллера?
Как различать вызовы веб-API и страницы в контексте промежуточного программного обеспечения?