Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
developer_
11 / 11 / 0
Регистрация: 11.08.2010
Сообщений: 130
1

Как определить создание сеcсии

12.05.2012, 20:17. Просмотров 1399. Ответов 7
Метки нет (Все метки)

Мне надо вести статистику уникальных посещений. Как мне определить что для текущего посещения создалась сессия?
Для всех посещений я сделал так: сделал глобальный фильтр:
C#
1
public class CounterVisitorsFilter : ActionFilterAttribute
А внём инкрементирую счётчик в базе данных. Но как определять уникальные сиссии?
Первое что пришло в голову - это заводить какойнибудь флаг в переменной сеии, а потом при каждом заходе его читать, но мне не нравится такой подход.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2012, 20:17
Ответы с готовыми решениями:

Блокнот: как определить, идет модификация файла или создание нового
Пишу простенький блокнот. Есть 2 кнопки - "Сохранить" и "Сохранить как...". При "Сохранить как..."...

Не могу определить, что не так (создание таблицы MySQL)
Ошибка Parse error: syntax error, unexpected ',' in Z:\home\test1.ru\www\createTable.php on line...

Интернет и соеденения. Как определить скорость подключения? Как определить скорость скачивания? И т.д.
Вот чо я хочу узнать: Как определить скорость подключения? Как определить скорость скачивания?...

Создать базу данных с(Создание функции БД, Создание процедуры БД, Создание тригера БД)
В задание для курсовой работы по БД входят вот такие пункты: 1.2 Создание функции БД. 1.3...

Наследование: Определить класс vector2 как вектор на плоскости. Определить для него операции и функции
Уже который час мучаюсь не выходит помогите пожалуйста Определить класс vector2 как вектор...

7
developer_
11 / 11 / 0
Регистрация: 11.08.2010
Сообщений: 130
13.05.2012, 21:43  [ТС] 2
Решил сделать через coockie. Вот мой filtr
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace Filters
{
    public class CounterVisitorsFilter : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            DM_Statistic dm = new DM_Statistic();
            dm.inc_stat_all_visitors();
            //Check uniq user------
            if (filterContext.HttpContext.Response.Cookies["uniq_user"].Value == null)
            {
                HttpCookie aCookie = new HttpCookie("uniq_user");
                aCookie.Value = "true";
                filterContext.HttpContext.Response.Cookies.Add(aCookie);
                //-----
                dm.inc_stat_uniq_visitors();
            }
        }
    }
}
Кто мне обяъснит почему не создаётся кукис - всегда при входе равен null
0
Ranvasrog
18 / 18 / 3
Регистрация: 08.11.2010
Сообщений: 78
14.05.2012, 10:30 3
Есть такой подход:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
// 
// POST: /Account/LogOn Авторизация
//
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
//проверка что пользователь ввел корректные данные
var _user = _Datamanager.Account.CheckAccount(model);
if (_user != null)//проверка
{                        
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
Session.Add("user", _user);
Session.Timeout = 120;
C#
1
2
3
4
5
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (Request.IsAuthenticated)
            {
                Userr = (Account)Session["user"];
Но я не утверждаю, что вариант хороший, потому что сам не копался, использую чужой сорс/
0
developer_
11 / 11 / 0
Регистрация: 11.08.2010
Сообщений: 130
14.05.2012, 11:02  [ТС] 4
Вы используете переменную сесии. Я у себя замечал что переменные сесии иногда сбрасываются.
Вобщем проблему пока решил так, куки создаю в base controller - базовый класс для всех контроллеров, таковой у меня есть, я в нём реализовал мультиязычность. Но почему кукисы не не создаются в фильтрах так и не понял.
0
14.05.2012, 11:02
y-fox
518 / 510 / 68
Регистрация: 19.09.2011
Сообщений: 826
14.05.2012, 13:17 5
developer_, сессия сбрасывается в 2х случаях:
1. Окончилось время ее существования.
2. Перезапустили сайт.

Тут:
Цитата Сообщение от developer_ Посмотреть сообщение
if (filterContext.HttpContext.Response.Cookies["uniq_user"].Value == null)
тут у вас куки никогда не будет == null, оно будет =="" если пустое, вообще для работы с куки которые проверяйте например так:
C#
1
if (string.IsNullOrEmpty(filterContext.HttpContext.Response.Cookies["uniq_user"].Value))
или вообще проверяйте:
C#
1
if(filterContext.HttpContext.Request["uniq_user"]==null)
1
Alligieri
CEO
Эксперт С++
2254 / 1244 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
15.05.2012, 23:55 6
developer_, а зачем фильтры, куки?! почему б не заюзать Session_Start/Session_End события в Global.asax?
0
Ranvasrog
18 / 18 / 3
Регистрация: 08.11.2010
Сообщений: 78
16.05.2012, 08:57 7
Цитата Сообщение от Alligieri Посмотреть сообщение
developer_, а зачем фильтры, куки?! почему б не заюзать Session_Start/Session_End события в Global.asax?
Не подскажите в какой библиотеке реализовано? Или может где почитать?
0
y-fox
518 / 510 / 68
Регистрация: 19.09.2011
Сообщений: 826
16.05.2012, 09:13 8
Лучший ответ Сообщение было отмечено как решение

Решение

Session_Start/Session_End - стандартные события asp.net/asp.net mvc, почитать можно на msdn'е, описывать их нужно в global.asax
Выглядит так:
C#
1
2
private void Session_Start(object sender, EventArgs e){} // Вызывается при старте новой сессии
private void Session_End(object sender, EventArgs e){}// Вызывается при окончании сессии
3
16.05.2012, 09:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2012, 09:13

Создание Кнопки загрузки картинки на сайт как в com_media, как в Медиа менеджере.
Создание Кнопки загрузки картинки на сайт как в com_media, как в Медиа менеджере. Дело такое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru