получить информацию о типе контроллера в промежуточном программном обеспечении (или как различить запрос к веб-API и для страницы) - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу создать промежуточное программное обеспечение, которое обрабатывает исключения, но разные запросы к контроллеру 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 и страницы в контексте промежуточного программного обеспечения?

1 Ответ

1 голос
/ 02 апреля 2019

Не уверен, почему ты хочешь это сделать.Вы можете использовать встроенное промежуточное программное обеспечение UseExceptionHandler() в Asp.Net Core и использовать его свойство Path, чтобы получить информацию о маршруте, например,

var path = HttpContext.Features.Get<IExceptionHandlerPathFeature>()?.Path;
...