У меня есть сайт сессии InProc со следующей реализацией:
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 на повторный цикл один раз в минуту. Когда у меня открытая сессия, она взрывается с:
Ошибка:
Тип исключения: HttpException
Сообщение об исключении: работа сервера недоступна в этом контексте
В средстве просмотра событий оно отображается как событие 1309. Он жалуется на строку, содержащую Server.MapPath ()