2017-05-10 10 views
3

나는 시작 내가 같은 필터가 처음 추가되는 경우가 있음을 인상 언제나 주문 코어

config.Filters.AddService(typeof(JsonExceptionFilter)); 

config.Filters.AddService(typeof(ExceptionFilter)); 

두 글로벌 예외 필터가 먼저 실행.

하지만 처음에 ExceptionFilter을 추가하면 두 번째로 실행됩니다.

UPDATE 1

ConfigureServices 방법 :

MVC와
services 
    .AddMvc(
     config => 
     { 
      config.Filters.AddService(typeof(ExceptionFilter)); 
      config.Filters.AddService(typeof(JsonExceptionFilter)); 
     }); 
+0

'ExceptionFilter'와'JsonExceptionFilter'는 어떻게 생겼습니까? – Alex

+0

간단한 예외 처리기, 아약스 오류에 대한 요청을 처리하는 로깅 secod가있는 것 – Marcin

+0

역순으로 실행되었는지 확인하기 위해 등록중인 순서를 뒤집어 봤습니까? 어쩌면 그들은 LIFO 명령으로 처형 당할 수도 있습니다. –

답변

4

, 당신이 당신의 필터에 대한 실행 순서를 결정하는 순서 값을 지정할 수 있습니다. 같은 것을 ASP.NET 코어에 적용 할 수 있는지 알 수 없으며 확인하기 전에 IDE가 필요하지 않습니다. 이거 해봐도 될까요?

config.Filters.AddService(typeof(ExceptionFilter), 2); 
config.Filters.AddService(typeof(JsonExceptionFilter), 1); 

이 아닌 그 경우에도, 순서를 지정하는 매개 변수를 허용 않습니다 AddService의 또 다른 과부하가 있는지 확인하십시오.

+0

추가 옵션이 있습니다. 이렇게하면 문제가 해결됩니다. 그러나 주문 순서가 미리 정해져 있지 않다는 것을 알고 있습니다. – Marcin

+1

@Marcin 실행 순서에 대한 정보가 더 있습니다 (https://docs.microsoft.com/en-us/aspnet/core/mvc/). 컨트롤러/필터), 여러 개의 예외 필터가 함께 작동하는 것과는 대조적으로 동작 필터의 순서에 대해 자세히 설명합니다. 위에서 언급했듯이 내 생각에 LIFO 주문을 사용하여 스택으로 실행됩니다. –