Как получить список ключей из состояния сеанса ASP.NET, поддерживаемых сервером SQL? - PullRequest
0 голосов
/ 30 сентября 2008

Я ищу хороший способ визуализации данных состояния сеанса ASP.NET, хранящихся на сервере SQL, желательно без создания одноранговой страницы .aspx. Есть ли хороший способ получить список ключей (и сериализованных данных, если это возможно) непосредственно с сервера SQL?

В идеале я хотел бы запустить некоторые команды T-SQL непосредственно для базы данных, чтобы получить список ключей сеанса, которые были сохранены для данного идентификатора сеанса. Было бы неплохо увидеть сериализованные данные для каждого ключа.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2017

Когда вы запускаете приложение asp.net в режиме сеанса сервера SQL, оно создает две таблицы: dbo.ASPStateTempApplications и dbo.ASPStateTempSessions. Вы можете найти свое приложение из первой таблицы и использовать его для запроса открытых сеансов из второй таблицы. В таблице ASPStateTempSessions хранятся два столбца SessionDataShort и SessionDataLong. Вся информация о сеансе является двоичной. Вам необходимо знать типы объектов, хранящиеся в сеансе, если вы хотите снова десериализовать их и просмотреть содержимое.

Я пробовал это недавно, и он отлично работает. На самом деле, для сложных приложений стоит иметь некоторые инструменты для просмотра и анализа данных сеанса, чтобы убедиться, что мы не храним нежелательные объекты и не оставляем их в базе данных надолго - это может замедлить процесс.

0 голосов
/ 30 сентября 2008

Можете ли вы уточнить немного, нет ли ссылки на доступный HttpContext (вы также можете использовать это из кода бэкэнда и FYI), который не позволяет использовать встроенный словарь сериализации и ключей?

РЕДАКТИРОВАТЬ, в ответ на ваше обновление. Я считаю, что база данных ASPState создает и уничтожает временные таблицы по мере необходимости, у нее нет постоянных таблиц, к которым можно обращаться, посмотрите хранимые процедуры, и вы должны найти одну из них в духе «TempGetItem», вы можете использовать этот sproc напрямую. или изучите его источник для более глубокого понимания.

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