Redirecionar no tempo limite da sessão no Global.asax no mvc4
Estou tentando detectar quando uma sessão termina e, em seguida, redirecionar o usuário para a página inicial assim que isso for feito no meu arquivo asax global.
Estou usando o código abaixo que encontreiaqui
global.asax:
protected void Session_Start()
{
if (Context.Session != null)
{
if (Context.Session.IsNewSession)
{
string sCookieHeader = Request.Headers["Cookie"];
if ((null != sCookieHeader) && (sCookieHeader.IndexOf("ASP.NET_SessionId") >= 0))
{
//intercept current route
HttpContextBase currentContext = new HttpContextWrapper(HttpContext.Current);
RouteData routeData = RouteTable.Routes.GetRouteData(currentContext);
//Substitute route Data Token Values for the Area
routeData.DataTokens["area"] = "";
routeData.DataTokens["UseNamespaceFallback"] = true;
//substitute route values
routeData.Values["controller"] = "home";
routeData.Values["action"] = "index";
routeData.Values.Add("timedOut", "true");
//routeData.Values["id"] = "timedOut";
IRouteHandler routeHandler = routeData.RouteHandler;
RequestContext requestContext = new RequestContext(currentContext, routeData);
IHttpHandler httpHandler = routeHandler.GetHttpHandler(requestContext);
httpHandler.ProcessRequest(Context);
Response.Flush();
Response.End();
}
}
}
}
Eu pensei que estava ok, pois funciona no ambiente de desenvolvimento, mas quando eu tento no meu servidor (IIS7), recebo o erro abaixo.
'HttpContext.SetSessionStateBehavior' só pode ser chamado antes de 'HttpApplication.AcquireRequestState'
Eu identifiquei o problema usando links comoaqui mas eu simplesmente não consigo fazê-lo funcionar. Eu acredito que o problema está nas linhas abaixo
IHttpHandler httpHandler = routeHandler.GetHttpHandler(requestContext);
httpHandler.ProcessRequest(Context);
No entanto, eu não consigo fazer isso funcionar no servidor. Alguma idéia ou sugestão?