jQuery “async = true” 对 .NET Web 服务的调用无法异步工作

本文关键字:调用 服务 工作 异步 Web NET async true jQuery | 更新日期: 2023-09-27 18:30:22

我有一个.NET Web服务,我需要从jQuery异步命中,并根据从服务获得的结果更新网格。我的问题是,服务命中只是第一次异步,后续请求是同步的(即使在 ajax 调用中指定 async=true 之后),如下所示

jQuery.ajax({
            type: "POST",
            url: url,
            data: data,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: true,
            success: function(msg) {
                var result = msg.d;
                return callback(result);
            },
            error: $.callDotNetSM.onError
        });

我的 .NET 服务方法如下所示。

[WebMethod(EnableSession = true)]
public static string GetData()
{
}

因此,请帮助我始终异步调用服务。任何帮助都非常感谢。

jQuery “async = true” 对 .NET Web 服务的调用无法异步工作

调用 WebMethod 的页面需要在页面指令中包含以下内容:

<%@ Page Async="true" EnableSessionState="False" %>

这样做的原因是,ASP.NET 每次访问会话时都会锁定会话,使其无法异步运行。即使您不在 WebMethod 中使用会话,除非您另有说明,否则页面仍会默认使用它。

编辑:

您的问题也可能是您有EnableSession="true"。您可能只需要将其设置为 false。