Начало и конец сессии ASP.Net - PullRequest
4 голосов
/ 11 июля 2010

Я использую ASP.Net + .Net 3.5 + VSTS 2008 + IIS 7.0 + C # для разработки веб-приложения. Я создаю очень простое веб-приложение, и я только что изменил page_load, Session_Start и Session_End. Вот мой код, мой вопрос: я обнаружил, что сообщение об окончании сеанса записывается в файл сразу после сообщения о начале сеанса. Мой метод тестирования - просто открыть IE для доступа к этой странице. Я думаю, что сессия должна длиться долго, как несколько минут. Почему сессия заканчивается так быстро? Почему свечение заканчивается, даже если я не закрываю страницу?

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Hello World! ");
    Session["SomeUserData"] = DateTime.Now;
}

protected void Session_Start(object sender, EventArgs e)
{
    using (TextWriter tw = new StreamWriter(@"C:\TestSession\bin\session.txt", true))
    {
        // write a line of text to the file
        tw.WriteLine(DateTime.Now + " Session Started.");
    }
}

protected void Session_End(object sender, EventArgs e)
{
    using (TextWriter tw = new StreamWriter(@"C:\TestSession\bin\session.txt", true))
    {
        // write a line of text to the file
        tw.WriteLine(DateTime.Now + " Session Ended.");
    }
}

Я встречался с той же проблемой, даже если добавить код манипуляции сессией в метод Page_Load, здесь выводится содержимое файла, которое, как вы можете видеть, вызывает событие окончания сеанса, вызываемое сразу после начала сеанса.

2010/7/15 0:11:14 Session Started.
2010/7/15 0:11:14 Session Ended.
2010/7/15 0:11:28 Session Started.
2010/7/15 0:11:28 Session Ended.

спасибо заранее, George

Ответы [ 2 ]

8 голосов
/ 12 июля 2010

Если я правильно помню, вам нужно назначить что-то для Session, чтобы активировать это. В противном случае ASP.NET будет каждый раз заново генерировать новый сеанс (новый идентификатор сеанса, если вы используете для проверки fiddler).

РЕДАКТИРОВАТЬ: потому что session.txt находится внутри каталога bin. После записи в каталог bin приложение будет перезапущено, поэтому событие Session_End сработало немедленно. Переместите файл session.txt из каталога bin в другое место, чтобы решить вашу проблему.

2 голосов
/ 11 июля 2010

Такое поведение иногда вызывается чрезмерной антивирусной программой.Попробуйте отключить антивирус и посмотрите, поможет ли это.Если это помогло, добавьте каталог сайта в список исключений.

Кроме того, закрытие браузера не повлияет на ваш сеанс в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...