У меня есть веб-сайт 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()
вы не можете получить доступ к HttpContext –