我有一个相当长的进程在标准回发中运行。然后我有以下页面方法将进度返回到应该报告进度的重复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
方法中的断点永远不会被击中。
答案 0 :(得分:0)
之前我遇到过这个问题。作为一种解决方法,我已经在ashx文件中实现了代码,并避免了这种方式触摸同一页面。也应该适用于您的代码,因为您只需报告会话变量。
顺便说一句,请注意当您在单个会话中运行2个请求时,代码会中断。当您在浏览器中打开同一页面的多个选项卡时,就会发生这种情况。