C# asp.net Mvc4中用于处理会话超时的会话启动和操作筛选器
asp.net Mvc4中用于会话超时处理的会话启动和操作筛选器? 创建SessionExpireFilter类以继承ActionFilterAttribute 我试图检测会话何时为空,然后在操作过滤器概念中将用户重定向到主页C# asp.net Mvc4中用于处理会话超时的会话启动和操作筛选器,c#,sql-server,asp.net-mvc,asp.net-mvc-5,C#,Sql Server,Asp.net Mvc,Asp.net Mvc 5,asp.net Mvc4中用于会话超时处理的会话启动和操作筛选器? 创建SessionExpireFilter类以继承ActionFilterAttribute 我试图检测会话何时为空,然后在操作过滤器概念中将用户重定向到主页 Below code is follow public class SessionExpireFilterAttribute : ActionFilterAttribute { public overrid
Below code is follow
public class SessionExpireFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;
// check if session is supported
if (ctx.Session != null)
{
// check if a new session id was generated
if (ctx.Session.IsNewSession)
{
// If it says it is a new session, but an existing cookie exists, then it must
// have timed out
string sessionCookie = ctx.Request.Headers["Cookie"];
if ((null != sessionCookie) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0))
{
ctx.Response.Redirect("~/Account/JIOLogin");
}
}
}
base.OnActionExecuting(filterContext);
}
}
**To add a with in web.config some changes**
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime maxRequestLength="104857600" />
<customErrors mode="Off" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="1" />
</authentication>
**<sessionState timeout="20"></sessionState>**
<pages controlRenderingCompatibilityVersion="4.0" />
</system.web>
Controller level to apply Attribute is [SessionExpireFilter]
[SessionExpireFilter]
public class HomeController : Controller
{
dbEntities1 db = new dbEntities1();
public ActionResult Index()
{
return View();
}
}
下面的代码如下所示
公共类SessionExpireFilterAttribute:ActionFilterAttribute
{
公共覆盖无效OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx=HttpContext.Current;
//检查是否支持会话
如果(ctx.Session!=null)
{
//检查是否生成了新的会话id
if(ctx.Session.IsNewSession)
{
//如果它说这是一个新会话,但存在一个现有cookie,那么它必须
//超时
字符串sessioncokie=ctx.Request.Headers[“Cookie”];
if((null!=sessionokie)和&(sessionokie.IndexOf(“ASP.NET_SessionId”)>=0))
{
ctx.Response.Redirect(“~/Account/jiogin”);
}
}
}
base.OnActionExecuting(filterContext);
}
}
**要在web.config中添加带有某些更改的文件**
****
要应用属性的控制器级别为[SessionExpireFilter]
[SessionExpireFilter]
公共类HomeController:控制器
{
dbEntities1 db=新的dbEntities1();
公共行动结果索引()
{
返回视图();
}
}
OK。那么你面临的具体问题是什么?