2016-11-17 71 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; 
     }