通过Ajax的ASMX服务调用挂起(永远不会完成)

时间:2011-05-13 13:55:01

标签: asp.net asmx session-variables

使用asmx服务通过ajax更新会话变量在连续进行大量调用时调用问题?

我有一个asmx(项目是遗留的ASP.NET,在Web应用程序层没有WCF)webservice,用于更新会话变量。当单击一个复选框时,会有一个使用此方法的ajax调用。它可以工作,除非你一个接一个地点击复选框(可以这样做)。 ajax调用挂起(永不完成)。

我认为这与尝试更新会话变量的多个请求有关,但我不确定。任何人遇到这个并提出一些建议吗?注意:我知道WCF可能是一个可能的答案,但我想知道是否有一个解决方案不需要立即将asmx服务更改为WCF。

3 个答案:

答案 0 :(得分:0)

  

使用asmx服务通过ajax更新会话变量会在连续进行大量调用时调用问题吗?

是的,因为ASP.NET将按顺序而不是并行地排队和执行这些请求,因为会话对象不是线程安全的。如果来自同一会话的多个请求被发送到某个ASP.NET处理程序,并且如果此处理程序写入会话,则它将简单地对这些请求进行排队。

答案 1 :(得分:0)

如果您的服务仅更新会话变量中的相同密钥,您可以尝试将值本地存储在cookie中,直到值发生变化。然后,当值发生更改时,您可以调用ASMX服务将新值存储在会话变量中。

答案 2 :(得分:0)

根据您使用的AJAX库,您始终可以选择在触发下一个呼叫之前放弃之前的正在运行的呼叫。如果您可以详细说明如何调用Web服务,我可以帮助您在开始新呼叫之前放弃先前的呼叫。