编辑真正的问题是为什么
when EnableSessionState="ReadOnly"
sessionState mode="InProc" is not really readonly
but sessionState mode="StateServer" is/edit
我的ASP.NET应用程序中的会话有问题。
目前,在网页上,我有一个按钮来做一个搜索(并保存在会话中),在搜索完成后,我有另一个按钮来做一个动作。此操作在WebMethod中调用,我将显示ajax进度条。
当我开发这个页面时,我不得不将属性EnableSessionState设置为"ReadOnly“。
即使有了这个ReadOnly参数,我也可以将搜索保存在会话中。
今天,我想对我的会话使用StateServer模式,但是现在,会话在ReadOnly模式下是真实的。因此,我无法得到我的搜索结果,启动第二个按钮的动作。
任何帮助都将不胜感激。
问候
发布于 2014-04-25 13:03:54
经过大量的研究,我得出结论:
我将EnableSessionState设置为"ReadOnly",但在InProc模式下,我仍然可以修改会话(使用StateServer,会话实际上是 ReadOnly)。
更多信息在这里:http://forums.asp.net/t/7504.aspx?Understanding+session+state+modes+FAQ
在Asp.NET中,“如果为同一会话发出两个并发请求(通过使用相同的SessionID值),则第一个请求将获得对会话信息的独占访问。第二个请求仅在第一个请求完成后执行。”
因此,如果不在此处设置WebMethod参数,就无法同时启动2个ReadOnly (进度条和“业务操作”)流程:http://msdn.microsoft.com/en-us/library/ms178581.aspx
在我的例子中,我有一个问题,因为,我将搜索的结果存储在会话中,但是现在使用StateServer,我的会话变量是ReadOnly,所以总是空的
我找到的解决方案是在这个网页上使用缓存而不是会话(但我无法详细解释我的解决办法)。
发布于 2014-04-23 13:10:09
您可以在web.config (system.web部分)中删除只读设置并启用会话状态服务器:
<sessionState mode="StateServer" stateConnectionString="tcpip=server:port"></sessionState>https://stackoverflow.com/questions/23245239
复制相似问题