我正在寻找一种可视化存储在SQL Server中的ASP.NET会话状态数据的好方法,最好不要创建一次性.aspx页面。是否有一种直接从SQL服务器获取密钥列表(以及可能的序列化数据)的好方法?

理想情况下,我想直接针对数据库运行一些T-SQL命令,以获取已为给定会话ID存储的会话密钥列表。很高兴看到每个密钥的序列化数据。

有帮助吗?

解决方案

您能否稍微详细说明,是否没有可用的HttpContext参考(您可以使用后端代码以及FYI),这会阻止您使用内置的序列化和密钥字典?

编辑,以回应您的更新。我相信ASPState数据库根据需要创建和销毁临时表,它没有你可以查询的永久表,看一下存储过程,你应该找到一个沿着“TempGetItem”的行,你可以使用这个sproc直接或检查其来源以获得更多洞察力。

其他提示

当您使用sql server会话模式运行asp.net应用程序时,它会创建两个表,dbo.ASPStateTempApplications和dbo.ASPStateTempSessions。您可以从第一个表中找到您的应用程序,并使用它来查询第二个表中的打开会话。 ASPStateTempSessions表存储两列SessionDataShort和SessionDataLong。所有会话信息都是二进制的如果要再次反序列化它们并查看内容,则需要知道存储在会话中的对象类型。

我最近尝试了这个,它运行正常。事实上,对于复杂的应用程序,有必要使用一些工具来查看和解析会话数据,以确保我们不存储不需要的对象并将其长时间留在数据库中 - 它有可能减慢速度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top