我试图找出如何获取和分离appid和sqlserver为stateserver返回的sessionid。我需要在我的webapp中获取此信息,除了阅读信息之外,我无法访问sqlserver。
文档中的:奇怪的是,ASPStateTempSessions表缺少将其链接到ASPTempStateApplications的AppId列。链接发生在ASPStateTempSessions的SessionId字段中,该字段不存储会话ID。它存储会话ID,并附加应用程序ID。声明
cmd.Parameters[0].Value = id + _partitionInfo.AppSuffix
所以我在AspStateTempApplications表中有这个值:
appid appname
-796116323 /w3svc/*/root/fsco*tbsc
我已在会话表中确定了我的会话信息与appid转换?
sessionid
cp5p2trw5navwnsgmhdzctnn2341447f
后面的部分:2341447f应该对应-796116323,但是如果我运行十六进制转换函数,它在负号上使用barfs或使用在线转换器给我错误的值。我怎样才能获得该值,我想查询会话值
我在这里错过了什么......看起来很简单
答案 0 :(得分:0)
您可以使用
SUBSTRING(a.SessionId, 25, 8) AS AppIDHex,
并将AppId转换为HEX
SUBSTRING(sys.fn_varbintohexstr(CONVERT(VarBinary,b.AppId)), 3, 8)
SQL代码:
SELECT
a.SessionId,
SUBSTRING(a.SessionId, 25, 8) AS AppIDHex,
b.AppId AS AppIDDec,
b.AppName,
DATALENGTH(a.SessionItemLong) AS SessionSize
FROM
dbo.ASPStateTempSessions AS a
LEFT OUTER JOIN
dbo.ASPStateTempApplications AS b
ON
SUBSTRING(a.SessionId, 25, 8) =
SUBSTRING(sys.fn_varbintohexstr(CONVERT(VarBinary,b.AppId)), 3, 8)