jquery“async = true”调用.net Web服务不能异步工作

时间:2012-04-06 16:04:19

标签: c# asp.net jquery

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

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

1 个答案:

答案 0 :(得分:5)

调用WebMethod的页面需要在Page Directive中具有以下内容:

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

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

修改

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