В момента имам 2 филтъра, Auth и Redirect, които правят следното: Filter Auth, който внедрява IAuthorizationFilter и ActionFilter, проверява за влизане и оторизация на потребителя и ако това не успее, задава filterContext.Result да бъде HttpStatusCodeResult от 403 (забранено). Filter Redirect, който внедрява IActionFilter и ActionFilter, проверява резултата и ако е 403, пренасочва към страница за вход.
Прилагам ги към действие, както следва:
[Auth(Order=0)]
[Redirect(Order=1)]
Въпреки това, Auth се изпълнява, но Redirect никога не се изпълнява (не е един от 4-те заменими метода, които предоставя). Ако премахна Auth Redirect се изпълнява, но ако включа Auth като първи филтър, Redirect не се изпълнява. Предполагам, че настройването на свойството Result на контекста на филтъра предотвратява изпълнението на други филтри, но не мога да осъзная защо това се случва. За информация използвам ASP.NET MVC 3 бета, но това не трябва да променя нищо.
Актуализация: Промяната на типа филтър на Auth на IActionFilter вместо IAuthorizationFilter води до задействане на OnResultExecuting и OnResultExecuted в Redirect, но промяната на Response няма никакъв ефект върху крайния отговор към браузъра.