Журнал сеанса и изменения сеанса веб-пользователя asp.net - PullRequest
2 голосов
/ 03 декабря 2009

Это будет довольно широкий вопрос, и любые предложения, примеры, ссылки приветствуются!

Я ищу хороший способ записать сеанс моих пользователей и действия на сайте до определенного момента.

Рассматриваемый сайт - это сайт для бронирования. Пользователи начинают с поиска, нескольких этапов сбора и выбора данных и заканчивают бронированием.

Итак, мне нужно реализовать регистрацию переменных текущего сеанса на каждом шаге, который делает пользователь. И, возможно, какая-то другая достоверная информация. Ведение журнала желательно делать в базе данных.

В конце я хотел бы связать все эти сессии со ссылкой на бронирование. Цель состоит в том, чтобы позже, если с бронированием что-то пошло не так или нам нужно расследовать ситуацию, мы получили всю необходимую информацию.

Я понимаю, что log4net является популярным выбором для ведения журналов, и я сам использовал его для простых целей, но не могу найти хороших примеров, касающихся моей ситуации.

Это должно быть обычной ситуацией, мне любопытно, как это делают другие.

1 Ответ

1 голос
/ 03 декабря 2009

Способ, который я когда-то настроил, состоит в том, чтобы создать две таблицы. Один содержит строку для каждого сеанса с некоторыми данными сеанса (id, отметка времени, ip, имя пользователя (если есть), другие данные) и таблицу session_data с несколькими строками на сеанс, причем каждая строка содержит идентификатор сеанса (ссылающийся на таблицу сеансов). ключ (описывающий то, что регистрируется, например, «entryform», «searchform» или «orderform») и поле XML, содержащее сериализованный объект состояния сеанса.

Вставить строку в таблицу сеанса, используя сеанс global.asa_onstart. Вставьте строки в session_data по мере необходимости.

Я использовал простые хранимые процедуры, но я понял, что вы можете настроить log4net для вставки строки. Одно предостережение: я однажды настроил nlog для регистрации сеансов и данных сеансов, но nlog (и я полагаю, также log4net) регистрирует его в потоке и не всегда записывает в базу данных. Я отключился от nlog для хранения критических данных сеанса (но использовал его для всех других целей отладки / ведения журнала / трассировки)

...