2010-09-21 5 views
2

J'ai un processus assez long exécuté dans une publication standard. Ensuite, j'ai la méthode de page suivante pour retourner la progression à une fonction JavaScript répétitive qui est censée rendre compte de la progression.Compteur de progression L'appel de méthode de page est annulé

Ma méthode simple page:

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

Mon script clientside:

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; 
    }); 
} 

La fonction updateImportProgress est appelée, mais Firebug rapporte que le POST pour getProgress est 'abandonnée'. Pourquoi cela pourrait-il être? Je soupçonne que c'est parce que l'appel à la méthode statique est bloqué par la méthode d'exécution réelle dont j'essaie de surveiller la progression. Un point d'arrêt dans la méthode GetProgress n'est jamais atteint.

Répondre

0

J'ai eu ce problème avant. Comme une solution de contournement j'ai implémenté le code dans un fichier ashx et évité de cette façon de toucher la même page. Cela devrait également fonctionner pour votre code, car vous signalez simplement une variable de session. Btw, notez que votre code casse lorsque vous avez 2 demandes en cours d'exécution dans une seule session. Cela peut se produire lorsque vous ouvrez plusieurs onglets de la même page dans le navigateur.