2012-07-31 84 views
3

我試圖在會話超時後自動重定向到我的登錄頁面。 我想在我的Main.Master頁面添加此代碼(所有其他網頁連接到該母版頁):自動重定向到會話超時後登錄

protected void Page_Load(object sender, EventArgs e) 
{ 
      //Redirects to Login Page 3 seconds before session timeout 
      Response.AppendHeader("Redirect", Convert.ToString((Session.Timeout * 60) - 3) + "; URL=~/Login.aspx"); 
} 

我配置了會話超時1分鐘在我的web配置:

<sessionState mode="InProc" cookieless="false" timeout="1"/> 

但沒有任何反應

任何人都可以幫我找到這個代碼的問題,或有其他的想法如何使它工作?

編輯

Response.AppendHeader("Refresh", 
    Convert.ToString((Session.Timeout * 60) - 3) + 
    ";URL=~/Login.aspx"); 
+0

你能從web.config中看到更多嗎?這是應該處理的地方,您可以指定一個登錄頁面。 – 2012-07-31 14:46:23

+0

你運行的是IIS還是使用Visual Studio的內置主機? – 2012-07-31 15:01:25

+0

@ChrisKnight Visual Studio的內置主機 – Inbal 2012-07-31 15:03:51

回答

1

AppendHeader記錄爲引起:從web.config中

<authentication mode="Forms"> 
    <forms name=".CAuthenticated" loginUrl="Login.aspx" protection="All" 
    timeout="20"/> 
</authentication> 
+0

似乎工作!謝謝! – Inbal 2012-07-31 15:21:42

+0

重定向時,我得到請求的URL:/website/Pages/~/Login.aspx 你知道爲什麼嗎?並且它似乎需要內容頁面位置而不是應用程序根目錄。 – Inbal 2012-07-31 15:44:50

+1

〜/ Login.aspx只是文本,如果你想把它翻譯成相對的URL使用類似VirtualPathUtility.MakeRelative – 2012-07-31 15:47:40

0

我認爲你需要使用Refresh,而不是在你的頭'跳轉」認證節點如果在發送HTTP頭之後附加了頭,則會發生異常您需要確保在發送HTTP頭之前調用AppendHeader。根據您的母版頁面,Load事件可能爲時已晚。您可以嘗試使用Init事件。

+0

我試過了,但它沒有幫助.. – Inbal 2012-07-31 15:01:38

1

下面是一個例子,我有一個對我的作品:

<authentication mode="Forms"> 
     <forms loginUrl="~/Login/Index" defaultUrl="~/Admin" timeout="20"> 
     </forms> 
    </authentication> 

如果你有這個,有沒有必要爲你檢查超時使用網站自己。這假設您正在使用表單身份驗證。

3
protected void Page_Init(object sender, EventArgs e) 
{ 
    if (Session["Username"] == null) 
    { 
     Response.Redirect(ResolveClientUrl("~/login.aspx") + "?returnURL=" + HttpContext.Current.Request.Url.AbsolutePath); 
    } 
    else 
    { 
     lblUsername.Text = Session["Username"].ToString(); 
    } 
} 
相關問題