Как получить список ключей из ASP.NET состояния сеанса, поддерживаемого SQL Server?

StackOverflow https://stackoverflow.com/questions/153912

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top