创建全球会议

时间:2010-08-19 09:46:38

标签: c# asp.net session

我想创建一个全局会话,除非我们手动终止它,否则它将保持活动状态。如何用c#在asp.net中做到这一点 我在做什么

HttpContext.Current.Session["UserID"] = someValue;

但是这样会话会在一段时间后丢失。

4 个答案:

答案 0 :(得分:1)

将数据存储在Application状态中。它会留在那里,直到你删除它,或应用程序死亡/回收/结束。

用法:

HttpContext.Current.Application["Foo"] = "bar";

答案 1 :(得分:1)

您可以在system.web - >下的web.config中设置超时。 sessionState - >超时。不确定你是否可以进行无限会话。

此外,您可能对Application对象感兴趣,该对象将内容存储在“应用程序会话”中而不是用户的内容中。我想到了,因为你说的是​​“全球”会议。

这是什么应用?听起来你实际上是在尝试将会话用作持久性存储,但即使你设法将超时设置为从不或5年或者其他任何事情,它们似乎只会工作 - 因为一旦应用程序重新启动,会话将“超时” 。您可能仍然可以解决这个问题,但您最好还是寻找像数据库这样的真正持久性解决方案。当然,我可能完全猜不到你的申请。

答案 2 :(得分:0)

正如nicolas78所说,使用会话超时配置属性来控制用户不活动后的会话到期时间。如果您在浏览器打开时遇到会话应该处于活动状态的要求,则有两种方法 -

  1. 使用cookie存储一些令牌,然后在会话过期时使用令牌重新构建会话状态。例如,如果用户ID存储在令牌中,则可以从用户存储中恢复用户详细信息。在最坏的情况下,您可能必须将整个州迁移到数据库。
  2. 保持ASP.NET会话状态,但通过从浏览器触发AJAX请求使其保持活动状态。我建议在n / 3间隔之后发出这样的请求,其中n是你的会话超时(确保至少有三个请求,所以即使两个请求丢失或落在边缘,一个通过)。

答案 3 :(得分:0)

也许你是在追踪个人资料?

http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

配置文件存在于会话之外,通常用于存储用户可以编辑的每个用户设置,例如其联系人详细信息和应用程序首选项。

配置文件可以与匿名用户和经过身份验证的用户一起使用。当匿名用户登录时,他们的匿名配置文件可以迁移到经过身份验证的配置文件(即附加到其用户名的配置文件)。

这里有很好的演练:http://quickstarts.asp.net/quickstartv20/aspnet/doc/profile/default.aspx