2017-08-29 63 views
0

我想做一個簡單的重定向到登錄頁面,如果會話過期在asp.net mvc 4.5。我正在嘗試如下。asp.net mvc重定向登錄會話到期

的Global.asax

protected void Session_OnEnd(object sender, EventArgs e) 
{ 
    Response.RedirectToRoute("Default"); //default is route 
} 

但這裏空異常來和響應的對象是找不到的。我看過this發佈,但無法弄清楚,因爲它非常廣泛。

UPDATE

我曾嘗試應用篩選如下現在它不會崩潰,但也沒有重定向到錯誤頁面。

SessionTimeoutAttribute

public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     HttpContext ctx = HttpContext.Current; 

     if (HttpContext.Current.Session["SchoolCode"] == null) 
     { 
      filterContext.Result = new RedirectResult("~/Views/Shared/Error"); 
      return; 
     } 
     base.OnActionExecuting(filterContext); 
    } 

屬性附加到Controller類

[SessionTimeout] 
public class MapsController : Controller{} 

爲什麼犯規重定向?

+0

你是什麼意思「未找到響應對象」?你有沒有嘗試在你的代碼周圍放一個'try ... catch'來檢查是否有異常拋出? –

+0

作爲你已經鏈接的帖子中的答案,使用'ActionFilters'並檢查裏面的'Session'。 – adiga

+0

我得到在System.Web.dll中發生類型'System.Web.HttpException'的異常,但未在用戶代碼中處理 其他信息:響應在此上下文中不可用。 – Samra

回答

0

我不得不改變我的代碼有點

public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     HttpContext ctx = HttpContext.Current; 

     if (HttpContext.Current.Session["SchoolCode"] == null) 
     { 
      filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(
                 new { action = "Login", controller = "Account" }));     
      //return; 
     } 
     base.OnActionExecuting(filterContext); 
    } 

忽略的Session_OnEnd代碼它沒有用。

相關問題