如何正确应用全局操作过滤器以便在所有操作上触发,然后返回触发过滤器的自定义操作结果?我将提供迄今为止我所做的事情的例子,但无法触发 filterContext.Result = ...
Global.asax中
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new RequestCounter());
}
public class RequestCounter : ActionFilterAttribute
{
public override void OnResultExecuted(ActionExecutingContext filterContext)
{
if (!LogCounter())
{
if (!filterContext.IsChildAction)
{
var values = new RouteValueDictionary(new
{
controller = "Account",
action = "LogOff"
});
filterContext.Result = new RedirectToRouteResult(values);
//--> Here, the action is not redirected to LogOff method,
// the goal is to logoff user, program just continues???
}
}
base.OnResultExecuted(filterContext);
}
}
如何正确地重定向到LogOff()方法,从这个上下文,使用Result或其他方式?谢谢!
答案 0 :(得分:1)
根据类似问题的answer,您需要将Area
参数分配给空字符串,例如
var values = new RouteValueDictionary(new
{
controller = "Account",
action = "LogOff",
area = ""
});