读取ASP.NET会话变量的速度非常慢(30秒)!

读取ASP.NET会话变量的速度非常慢(30秒)!,asp.net,session,session-state,session-variables,Asp.net,Session,Session State,Session Variables,在调试一个执行缓慢的操作时,我发现(令我惊讶的是)该行: if (HttpContext.Current.Session["CurrentCompany"] == null) 执行大约需要30秒 可能会发生什么事!?以前有人见过这样的吗 (它位于loadbalanced配置中,StateServer存储会话,这可能相关吗?我找到了一个解决方法:我在web.config中更改了会话提供程序: 从“StateServer”到“InProc”: 。。。停顿消失了 (很可能它在到达stateser

在调试一个执行缓慢的操作时,我发现(令我惊讶的是)该行:

if (HttpContext.Current.Session["CurrentCompany"] == null)
执行大约需要30秒

可能会发生什么事!?以前有人见过这样的吗


(它位于loadbalanced配置中,StateServer存储会话,这可能相关吗?

我找到了一个解决方法:我在web.config中更改了会话提供程序:

从“StateServer”到“InProc”:


。。。停顿消失了

(很可能它在到达stateserver时遇到问题,因为当前服务器不是它最初运行的位置)

感谢您的建议,尤其是@Hari和@dougajmcdonald

事后诸葛亮编辑

这可能会对以后的人有所帮助:这个问题的根本原因似乎是一种方法,该方法在stateserver出现问题的同时产生了大量非常繁重的SQL查询。我认为这些都是相关的,不完全确定如何。此后,我也遇到过类似的问题,因此,如果您遇到这样的会话问题,请查看数据库活动是否频繁。

对会话[string]的所有调用都很慢,还是每个请求只有第一次调用?是否“恰好”30秒?我只是认为SQL上的默认连接超时是30秒,所以可能是到状态服务器的连接失败。这句话最终会变成真的吗?我只是想澄清一下:你100%确定这是代码吗?您是否尝试使用测试常量值来确保?使一台服务器脱机;将会话设置为inproc;仅在该服务器上测试应用程序-以隔离应用程序与sql server存在连接问题的问题。
<sessionState mode="InProc" cookieless="false" timeout="60"/>