ASP.NET会话差异InProc StateServer

时间:2014-04-23 13:06:06

标签: c# asp.net session

[编辑] 真正的问题是为什么

when EnableSessionState="ReadOnly" 

    sessionState mode="InProc" is not really readonly
    but sessionState mode="StateServer" is

[/编辑]

我的ASP.NET应用程序中存在会话问题。

目前,在网页上,我有一个按钮来进行搜索(并将其保存在会话中),搜索完成后我有另一个按钮来执行操作。 在WebMethod中调用此操作,并显示ajax进度条。

当我开发此页面时,我必须将属性EnableSessionState设置为" ReadOnly"。

即使使用此ReadOnly参数,我也可以在会话中保存搜索。

今天我想在会话中使用StateServer模式,但现在,会话实际上处于ReadOnly模式。因此,我无法获得搜索结果以启动第二个按钮的操作。

非常感谢任何帮助

此致

2 个答案:

答案 0 :(得分:0)

您可以在web.config(system.web部分)中删除只读设置并启用会话状态服务器:

<sessionState mode="StateServer" stateConnectionString="tcpip=server:port"></sessionState>

答案 1 :(得分:0)

经过大量研究,我得出结论:

我将EnableSessionState设置为&#34; ReadOnly&#34;,但在InProc模式下,我仍然可以修改会话(使用StateServer,会话真的 ReadOnly)
更多信息:http://forums.asp.net/t/7504.aspx?Understanding+session+state+modes+FAQ

在Asp.NET&#34中;如果对同一会话发出两个并发请求(通过使用相同的SessionID值),则第一个请求将获得对会话信息的独占访问权。第二个请求仅在第一个请求完成后执行。&#34;
因此,我无法在不设置ReadOnly参数的情况下一起启动2个WebMethod(进度条和&#34;业务操作&#34;)进程 更多信息:http://msdn.microsoft.com/en-us/library/ms178581.aspx

在我的情况下,我有一个问题因为,我在会话中存储搜索结果但现在使用StateServer我的会话的变量是ReadOnly所以总是空的

我找到的解决方案是在此网页上使用缓存而不是会话(但我不能详细解释我的所有解决方法)