3

我有一个 .NET 网络服务,我需要从 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()
{
}

所以,请帮助我一直异步调用服务。非常感谢任何帮助。

4

1 回答 1

6

正在调用您的 WebMethod 的页面需要在页面指令中具有以下内容:

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

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

编辑:

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

于 2012-04-06T16:08:53.393 回答