2011-09-29 1 views
0

컨트롤러 동작의 시작 부분에 'stuff'를 설정하고 페이지 렌더링이 끝나면 찢어 지려고합니다. 'OnActionExecuting'및 'OnResultExecuted'필터를 재정 의하여이 작업을 수행했습니다. MVC 2를 사용하고 있습니다.MVC 필터가 언제 그리고 얼마나 신뢰할 수 있습니까?

내가 지금 갖고있는 가장 큰 질문은이 두 필터가 얼마나 안정적입니까?

그 답이 100 % 시간이 아니라면, 나는 이것을 진행하는 가장 쉬운 방법이라고 생각합니다. ('first'와 'last'의 순서를 지정하는) 커스텀 필터를 사용하는 것이 좋습니다. 시간의.

답변

3

100 %. MVC의 파이프 라인의 그것의 일부입니다. 그들은하지 않았다 경우가 AuthorizeAttribute 꽤 큰 보안 구멍이 될 것입니다. 내장 된 필터가 relieably 호출되지 않으면

+4

잡히지 않는 예외가없는 한 ... – tvanfosson

+0

슈퍼 - 예외가 중반 렌더링 된 경우 슈퍼가 발생합니다. 감사. 나는 정말로 여기 가장자리 사건을 잡는 데 관심이있다. MVC를 '마지막으로'블록과 동등한 것을 찾고 있는데, 상관없이, 나는 언제나 '해체'할 수 있습니다. – Dave

0

, 왜 사용자 정의 필터가 더 좋을까요?

코드에 대한 좋은 점은, 이해한다면, 정확히 똑같은 일을하는 경향이 있다는 것입니다. 동일한 입력이 주어지면 시간.

+0

그게 바로 큰 문제입니다. - 나는 오히려 절대적으로 특정 메커니즘 (마침내 블록과 같은)을 가질 것입니다. – Dave

1

확실한 신뢰성이 필요한 경우 정리 필터를 IExceptionFilter로 구현하고 OnResultExecuted 재정의와 동일한 정리 코드를 실행해야 할 수도 있습니다 (먼저 완료되지 않았는지 확인한 후). 어떤 종류의 "정리"가 필요한지에 따라 단순히 HandleErrorAttribute를 사용할 수도 있습니다.이 경우 OnResultExecuted는 단순히 결과를 오류보기의 결과로 대체하기 때문에 실행될 수 있습니다.