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



我有一个.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()
{
}

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

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

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

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

编辑:

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

最新更新