2015-11-11 24 views
1

我正在使用ashx文件來終止用戶會話並重定向到主頁面。重定向不起作用以及例程過期cookies。 我試過HttpContext.Current.Response.Redirect(「index.aspx」,false),但也沒有工作。有什麼更好的辦法謝謝。過期的Cookie和重定向

我的代碼:

public void ProcessRequest (HttpContext context) 
{ 
    HttpCookie cookie = HttpContext.Current.Request.Cookies["user"]; 
    if (cookie != null) 
     HttpContext.Current.Request.Cookies["user"].Expires = DateTime.Now.AddYears(-30); 
    cookie = HttpContext.Current.Request.Cookies["admin"]; 
    if (cookie != null) 
     HttpContext.Current.Request.Cookies["admin"].Expires = DateTime.Now.AddYears(-30); 
    HttpContext.Current.Response.Redirect("index.aspx", false);  
} 
+0

你是怎麼調用這個Generic Handler(.ashx)的?你通過ajax打電話嗎? –

+0

是的,通過一個包含ajax命令來調用logout.ashx的javascript例程。 註銷功能() { $就({ URL: 「logout.ashx」 的contentType: 「應用程序/ JSON;字符集= UTF-8」 數據類型: 「HTML」 }) } – Luana

+0

我看到一個類似的帖子:http://stackoverflow.com/questions/17866856/trying-to-redirect-from-an-ashx-page-to-an-aspx-page –

回答

0

如果你的處理器返回302結果AJAX調用不會自動地將用戶,它會返回重定向到頁面的內容。

如果沒有異常,您應該讓處理程序過期並返回true,否則返回false。在ajax調用的成功回調中,如果結果爲true,則通過javascript將用戶重定向到下一頁。如果爲false,則向他們展示某種錯誤消息。

對於cookie過期,您必須從請求中獲取cookie,將過期時間設置爲過去的時間(就像您當前所做的那樣),但有一件事沒有做的是將cookie添加回響應。