2016-11-17 69 views
0

我跟着this guide将Sql Server设置为我的会话数据存储。如何在使用SQL Sever会话存储时确定会话ID

我注意到Sessions表有一个ID列。我希望我可以使用这个ID列来确定当前会话(Sessions表中的行)正在使用。但是,我不知道如何生成此ID或者幕后ASP.NET Core如何将此ID与会话相匹配。

我试过使用HttpContext.Session.Id,但它与数据库中的ID不同。

那么,我该如何确定哪一行正在用于会话呢?

回答

0

它是随机生成的。你可以看到这在middleware source

 if (string.IsNullOrWhiteSpace(sessionKey) || sessionKey.Length != SessionKeyLength) 
     { 
      // No valid cookie, new session. 
      var guidBytes = new byte[16]; 
      CryptoRandom.GetBytes(guidBytes); 
      sessionKey = new Guid(guidBytes).ToString(); 
      cookieValue = CookieProtection.Protect(_dataProtector, sessionKey); 
      var establisher = new SessionEstablisher(context, cookieValue, _options); 
      tryEstablishSession = establisher.TryEstablishSession; 
      isNewSessionKey = true; 
     }