Как записать уникальные пользовательские сессии в Webmatrix / Razor / ASP.NET Web Pages? - PullRequest
1 голос
/ 10 августа 2011

Мне нужно регистрировать уникальные пользовательские сессии в Webmatrix / Razor / ASP.NET Web Pages. _Appstart срабатывает только тогда, когда приложение запускается в первый раз в IIS, или срабатывает один раз за одно попадание уникального пользователя? Если только один раз, как мне записать уникальные пользовательские сессии и настройки?

ОБНОВЛЕНИЕ: я не был уверен, что события Global.asax были запущены в Razor / ASP.NET WebPages. Я проверил это, и событие Session_Start срабатывает просто отлично. Вопрос решен.

void Session_Start(object sender, EventArgs e)
{
    // Code that runs when a new session is started
    Dictionary<DateTime, String> d = new Dictionary<DateTime, String>();
    Application.Lock();
    if (Application["d"] != null)
    {
        d = (Dictionary<DateTime, String>)Application["d"];
    }
    d.Add(DateTime.Now, HttpContext.Current.Session.SessionID);
    Application["d"] = d;
    Application.UnLock();

}

Ответы [ 2 ]

3 голосов
/ 10 августа 2011

Чтобы напрямую ответить на ваш вопрос, _AppStart запускается, когда первый пользователь заходит на ваш сайт.Будущие пользователи сайта НЕ запускают _AppStart.Не существует конкретной страницы или места для размещения кода, который запускается для каждого уникального пользователя.

Что вы хотите сделать, так это взглянуть на объект ASP.Net Session.На своей странице вы можете хранить и извлекать данные из сеанса следующим образом:

@{
    // Retrieve
    var someSetting = Session["SomeSetting"]
    // Store
    Session["SomeSetting"] = someSetting;
}

ASP.Net позаботится о том, чтобы параметр сохранялся для каждого экземпляра браузера с использованием файлов cookie сеанса.Обратите внимание, что если вы находитесь в среде веб-фермы, вам нужно что-то более надежное, но когда вы говорите об одном сервере, это будет хорошо.

Если вам нужна дополнительная информация, вотофициальная документация для состояния сессии ASP.Net: http://msdn.microsoft.com/en-us/library/ms178581.aspx

2 голосов
/ 10 августа 2011

Вы спрашивали о регистрации "уникальных пользовательских сессий", что немного сбивает с толку. Все сессии уникальны, но не все сессии принадлежат уникальным посетителям. Вернувшиеся посетители начнут новые сеансы. Если вы хотите сохранить количество сеансов, вы можете подключиться к событию Session_Start в Global.asax. Если вы хотите считать уникальных посетителей, используйте куки. Установите их, когда пользователь посещает, если у вас еще нет cookie. Убедитесь, что их срок истекает в будущем. Если у посетителя нет файла cookie для отслеживания вашего сайта, он должен быть новым (или он мог удалить свой файл cookie ...)

...