首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET会话差分InProc StateServer

ASP.NET会话差分InProc StateServer
EN

Stack Overflow用户
提问于 2014-04-23 13:06:06
回答 2查看 546关注 0票数 0

编辑真正的问题是为什么

代码语言:javascript
复制
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模式下是真实的。因此,我无法得到我的搜索结果,启动第二个按钮的动作。

任何帮助都将不胜感激。

问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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,所以总是空的

我找到的解决方案是在这个网页上使用缓存而不是会话(但我无法详细解释我的解决办法)。

票数 0
EN

Stack Overflow用户

发布于 2014-04-23 13:10:09

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

代码语言:javascript
复制
<sessionState mode="StateServer" stateConnectionString="tcpip=server:port"></sessionState>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23245239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档