我有以下實現一個inproc會議網站:會話和服務器變量Session_End中
protected void Session_End(object sender, EventArgs e)
{
StreamWriter sw = null;
string logFile = Server.MapPath("testSessionLog.txt");
sw = new StreamWriter(logFile, true);
sw.WriteLine("Session_End called at " + DateTime.Now);
try
{
//Request is not available in this context
if (Request.ServerVariables["Logon_User"] != null && Request.ServerVariables["Logon_User"] != "")
{
sw.WriteLine("Made it past Request.ServerVariables check");
}
}
catch (Exception ex)
{
sw.Write("An error occured: " + ex.Message);
}
finally
{
sw.Close();
}
}
我讀了堆一對夫婦的文章(1,2),其詳談有關使用this.Session得到去HttpSessionState。那麼Server.MapPath()和Request.ServerVariables()呢?我無法讓這些在Session_End中工作。
我將這個相同的代碼塊粘貼到button_Click事件中,它運行時沒有問題。這使我相信它是與Session_End相關的。
我將IIS6設置爲每分鐘一次recylcle。當我有一個打開的會話它吹了: 錯誤:
異常類型:HttpException
異常消息:服務器操作不可用,在這種情況下
在事件查看器中它顯示爲事件1309。它抱怨包含Server.MapPath()
你會認爲系統知道哪個會話結束,因此可以將一些原始會話數據關聯到this.Session並將其存儲在此之前.Session.original在吹它遠... – 2011-01-13 14:54:10
您正在尋找請求數據,並且Session_End中沒有Request對象。如果有需要訪問的東西(比如用戶id或者其他東西),然後將它明確地存儲在會話中:* Session [「UserId」] = _userId * – Ray 2011-01-13 15:52:47
我其實不確定我們要找什麼。有12個應用程序,我沒有寫任何應用程序。我只是解決了爲什麼我們每天都會遇到100個錯誤。由於我在下面發佈的「解決方案」擺脫了錯誤,這就是「修復」。 – 2011-01-13 17:25:05