【发布时间】:2014-09-22 03:05:22
【问题描述】:
在 MVC 中,我为 Session Timeout 创建了自定义属性,例如:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class SessionExpireFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;
// If the browser session or authentication session has expired...
if (ctx.Session["USER_ID"] == null )
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "Controller", "Employer" },
{ "Action", "SessionTimeout" }
});
}
base.OnActionExecuting(filterContext);
}
}
我的意思是当会话超时时,它应该重定向到“SessionTimeout”Action方法,我已经为Controller方法设置了,
[SessionExpireFilter]
public class EmployerController : Controller
{
//Action Methods
}
但是这里,当 Session 超时时,它会在浏览器地址上执行 action 方法,但显示如下:
This webpage has a redirect loop
不知道哪里出错了?
【问题讨论】:
-
检查您在 EmployerController 上的属性
-
什么意思?属性有问题吗?
-
也许添加 [AllowAnonymous]?
标签: asp.net-mvc asp.net-mvc-4 session action-filter