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



当连续进行大量调用时,使用 asmx 服务通过 ajax 调用更新会话变量是否是一个问题?

我有一个 asmx(项目是遗留 ASP.NET,在 Web 应用程序层没有 WCF)Web 服务,用于更新会话变量。 有一个 ajax 调用在单击复选框时使用此方法。 除非您一个接一个地单击复选框(可以这样做),否则它会起作用。ajax 调用挂起(永远不会结束)。

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

当连续进行大量调用时,使用 asmx 服务通过 ajax 调用更新会话变量是否是一个问题?

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

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

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

最新更新