进度计数器页面方法调用已中止

时间:2010-09-21 18:35:06

标签: asp.net ajax

我有一个相当长的进程在标准回发中运行。然后我有以下页面方法将进度返回到应该报告进度的重复JavaScript函数。

我的简单页面方法:

[WebMethod]
public static int GetProgress()
{
    return (int)(HttpContext.Current.Session["ActivationResources.ImportProgress"] ?? 0);
}

我的客户端脚本:

function startProgress() {
    window.setInterval(updateImportProgress(), 500);
}

var importProgress = 0;
function updateImportProgress() {
    //debugger;
    PageMethods.GetProgress(function (result, response, context) {
        if (result == importProgress) {
            $("#messageLabel").append(" .");
        }
        else {
            $("#messageLabel").html("Busy importing resources - " + result + "%");
        }
        importProgress = result;
    });
}

调用updateImportProgress函数,但Firebug报告GetProgress的POST被“中止”。为什么会这样?我怀疑这是因为静态方法的调用被实际执行方法阻止,我正在尝试监视它的进度。 GetProgress方法中的断点永远不会被击中。

1 个答案:

答案 0 :(得分:0)

之前我遇到过这个问题。作为一种解决方法,我已经在ashx文件中实现了代码,并避免了这种方式触摸同一页面。也应该适用于您的代码,因为您只需报告会话变量。

顺便说一句,请注意当您在单个会话中运行2个请求时,代码会中断。当您在浏览器中打开同一页面的多个选项卡时,就会发生这种情况。