HttpContext.Current.Response.Redirect("~/default.aspx");
,當我在Session_End中Global.asax中 錯誤使用此代碼對我說:重定向從Global.asax中
Object reference not set to an instance of an object.
爲什麼?
HttpContext.Current.Response.Redirect("~/default.aspx");
,當我在Session_End中Global.asax中 錯誤使用此代碼對我說:重定向從Global.asax中
Object reference not set to an instance of an object.
爲什麼?
Session_End中不是一個事件它被應用程序的用戶調用,當會話超時時,服務器會調用它。所以當你試圖訪問HttpContext時,它是空的,因爲沒有HttpContext來訪問(沒有用戶正在與你的站點進行某種交互)。
無論你做什麼,試圖重定向一個不存在的HttpContext都會失敗。
現在我在做什麼重定向session_end? – Ali
在Session_End中重定向是沒有意義的,因爲沒有什麼可以重定向。 Session_End事件是當會話超時,沒有用戶重定向。這只是服務器端。 –
當事件SessionEnd被提出時,請求然後響應爲空。
HttpContext.Current.Response //this is null
這是故意的:會議要求中沒有結束,但是當會話超時
它通常(默認配置)上次請求之後會發生20分鐘。
由於沒有請求也沒有響應。
You need to understand better how Asp.net Session State works
無論如何,如果你想如果會話已過期,您可以檢查存儲在會議的變量之一,將用戶重定向到一個頁面:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["YOUR_VAR_NAME"]==null)
{
Response.Redirect("~/default.aspx");
}
}
Session_End由服務器根據內部計時器在內部觸發。因此,當發生這種情況時,沒有HttpRequest相關聯。這就是爲什麼Response.Redirect或Server.Transfer沒有意義並且不起作用的原因。
我希望上述信息將有助於
的可能重複[如何處理在Global.asax中會話結束?(http://stackoverflow.com/questions/621744/how-to-handle-session -end-in-global-asax) – Win