2014-01-13 24 views
0

在我的通用处理程序中,我尝试从会话中获得一些值。但有时一次会议我有不同的价值观。asp.net会话一个键的不同值

public void ProcessRequest(HttpContext context) 
{ 
    ... 
    string someVar = context.Session["some_key"]; 
    ... 
} 

在网页(一次)初始化会话[“some_key”]值,然后是用户呼叫处理程序。问题是,几次回发请求context.Session [“some_key”]给了我不同的价值。它可能是应用程序池“Max Worker Processes”设置的原因吗?

+0

确实遇到这个登录时在同一个用户?会话是每个客户端,这意味着一个会话只能访问您的网站的每个客户端,并且每个用户都可以拥有自己的会话 – RononDex

+0

这也意味着在两个不同的浏览器中查看该页面意味着每个会话都有不同的会话。此外,您应该指定您的处理程序想要使用会话对象(使用'IRequiresSessionState'或'IReadOnlySessionState')。 – Luaan

+0

这是来宾会议,相同的浏览器(sessionId我已经检查过它)。 Handler实现IRequiresSessionState。 – l1ar

回答

0

您的代码存在的问题是您没有在会话中存储任何值。因此,ASP.NET正在为每个新请求生成一个新会话。

查找更多帮助这里:http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx

如果应用程序需要在整个会话静态会话ID,您可以实现在应用程序的Global.asax文件和存储数据的在session_start方法会话对象修复会话ID,或者您可以使用应用的另一部分中的代码显式地将数据存储在会话对象中。

添加像这样的地方在你的代码应该这样做:

context.Session["dummy"] = 0; 

更重要的是,你可以试着问问题之前运行搜索,以避免duplicates

+0

其实我说过“Session [”some_key“]的值是在网页上初始化的,所以这不是问题。 – l1ar

相关问题