System.Web.Http.AuthorizeAttribute (재정 의하여 OnAuthorization 메서드)에서 파생 된 클래스에 내 인증 논리가 있습니다. 그 방법으로 DB를 호출하고, 비동기 호출을 원한다. (운 좋게도, 새로운 ADO.NET 비동기 API가 허용한다.)비동기 동작 필터 : ASP.NET 웹 API의 비동기 및 AuthorizeAttribute
그런 다음이 속성을 컨트롤러에 적용하여 모든 호출이 인증 필터를 통과하도록합니다. 여태까지는 그런대로 잘됐다.
하지만 다음과 같은 문제가 발생합니다. 프레임 워크 (ASP.NET 웹 API)는 내 의도가 무엇인지 알지 못하는 것 같습니다 :) 내 필터의 OnAuthorizaion 메서드가 끝나기 전에 컨트롤러의 액션 실행이 진행되는 것처럼 보입니다 (비동기 호출에서 반환 됨). 따라서 프레임 워크에서 예외 "모든 비동기 작업이 완료되기 전에 요청 처리가 완료되었습니다."
처리 할 수있는 기본 방법이 있습니까?
감사합니다.
P. 내 직감으로 나는 커스텀 액션 필터 생성을하고 있다고 말한다. 그렇다면 ExecuteActionFilterAsync를 오버라이드하고 거기에있는 모든 태스크 관련 물건을 직접 처리해야한다.)
프레임 워크에서 제공하는 모든 필터 인터페이스는 비동기식입니다. 동기 API를 노출하는 구현의 기본 구현으로 작업하고 있다고 가정합니다. IAuthorizationFilter'를 사용하여 아래 답변에서 제안한대로 작업하십시오. – tugberk