会话和内存中的对象

时间:2010-08-23 21:31:10

标签: c# asp.net

我在这里很困惑。好的,所以我正在尝试创建一个可以用来存储一些信息的会话对象。

我的计划是每当用户登录Facebook时(在他们重定向回我们的网站之后)创建一个新的FacebookSession对象。我可以使用facebook SDK登录Facebook后创建的自动生成的cookie来设置状态。因此,当他们回到服务器端并创建我的FacebookSession对象并设置状态时,我可以抓住那个cookie,其中包含cookie信息(userID,token等),其中包含该用户的facebook帐户所需的信息。

我不太了解会话状态以及与页面相关的线程。那么,我不能在每个页面上检查现有的会话对象,或者当你从一个页面转到另一个页面时它是否会丢失?假设我在用户返回时创建了这个初始的FacebookSession对象,然后立即将它们重定向到另一个页面Response.Redirect。我失去了那个对象吗?我觉得这样对吗?因为新的页面请求会在IIS中为该用户生成一个新线程吗?然后,就你在内存中创建的任何对象进行擦除而言,你可以从一个干净的平板开始。

那么我需要在数据库中继续使用它,然后使用GetCurrentSession这样的方法,以某种方式查找当前用户并尝试获取表中的当前会话信息,让我们称为FacebookSession,我可以存储他们的facebookUserID,令牌等等。

正确?

最后,在任何时候,我如何知道如何在数据库中检查该用户?我需要某种独特的身份证?所以我所做的就是添加一个Pk列,它实际上将利用现有的sessionID,我们网站上的每个用户都有...这是他们访问我们网站时获得的整体全局访问会话。

所以使用它我可以通过他们的“全局会话ID”在我的表中查找它来唯一地识别他们的facebook Session。但是我遇到的问题最终是为了从我的FacebookSession.cs对象调用GetCurrentSession(),我需要以某种方式传递它的全局ID。我可以通过构造函数执行此操作(我不是将它作为单例)。但是现在该对象和其他几个对象依赖于查找用户的Facebook会话所需的全局ID。那么如果我们想要重用我在其他一些不想将全局会话用作PK的项目中创建的库/包装器,那么我有点紧张。

所以这就是我现在头痛的问题。我只是想要一些意见和验证,如果我在这里走正确的道路,如果我对内存,IIS,线程和会话状态的正确方法就攻击这个问题。

1 个答案:

答案 0 :(得分:0)

我猜您应该从MSDN检查this description