2011-09-08 9 views
2

로깅을 수행하는 ActionFilter이 있습니다. 나는 서버에 들어오는 요청과 매개 변수를 기록하기를 원한다. 이것은 잘 작동합니다. 그러나 OutputCaching을 추가하면 첫 번째 요청 만 기록하고 다른 요청은 기록하지 않습니다. 이 그것이 기본 호출에 넣기 전에 내 코드를 실행하는를 가질 것이라고ActionFilters와 OutputCaching을 함께 사용하는 방법은 무엇입니까?

public class OutputCacheLoggingFilterAttribute : OutputCacheAttribute 
{  
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     //Do my stuff 

     base.OnActionExecuting(filterContext); 
    } 
} 

나는 OutputCache를 상속하면 내가 생각 :

는 심지어 같은 동작하는 ActionFilter를 작성했습니다. 그러나 나는 틀린 것으로 입증되었고 어쨌든 내 코드는 한 번만 실행됩니다.

답변

0

글쎄, 내가 아는 한이 시스템에는 권한 부여 속성이 캐싱에 관계없이 매번 실행되도록하는 "해킹"이있다. 어쩌면 필터를 IAuthorizationFilter를 구현하고 OnAuthorization 메서드에서 작업을 수행 할 수 있습니다. 예, 그것은 불쾌한 속임수이지만 캐싱 시스템 자체를 "해킹"하는 것보다 나은 것 같습니다.

작동하는지 알려주세요. (내 머리 속에는 처음 테스트 한 적이 없습니다.)

+0

이제는 흥미로운 해결책입니다. 이것에 대한 단점은 아니지만 권한 부여 속성에는 액션 당 허용되는 것이 하나만 있습니다. –

+0

아니요, afaik는 모든 승인 속성을 사용할 수 있습니다. – rouen

관련 문제