58 votes

ASP.NET UpdatePanel Time Out

Je fais une demande à partir d'un UpdatePanel qui prend plus de 90 secondes. J'obtiens cette erreur de délai d'attente :

Erreur d'exécution de Microsoft JScript : Sys.WebForms.PageRequestManagerTimeoutException : La requête du serveur a expiré.

Quelqu'un sait-il s'il est possible d'augmenter le délai avant que l'appel ne soit interrompu ?

92voto

Telos Points 3226

Il existe une propriété du ScriptManager qui vous permet de définir le délai d'attente en secondes. La valeur par défaut est de 90 secondes.

AsyncPostBackTimeout="300"

3 votes

Où doit-on l'ajouter ? côté serveur / côté client, toute explication supplémentaire serait très appréciée.

0 votes

Le fait de doubler les secondes autorisées avant le délai d'attente en définissant l'option AsynchPostBackTimeout="180" a bien fonctionné pour ma solution.

0 votes

@owengerig cette propriété devrait être ajoutée dans votre ScriptManager

47voto

narayan Points 216

Dans mon cas, l'objet ScriptManager a été créé dans un fichier de page principale qui a ensuite été partagé avec les fichiers de page de contenu. Ainsi, pour modifier la propriété ScriptManager.AsyncPostBackTimeout dans la page de contenu, je devais accéder à l'objet dans le fichier aspx.cs de la page de contenu :

protected void Page_Load(object sender, EventArgs e)
{
     . . . 
     ScriptManager _scriptMan = ScriptManager.GetCurrent(this);
     _scriptMan.AsyncPostBackTimeout = 36000;
}

1 votes

Bonjour @narayan, cela fonctionnera-t-il pour RadScriptManager aussi ?

0 votes

@NagibMahfuz, malheureusement je n'ai pas les moyens d'essayer RadScriptManager donc je ne peux pas répondre définitivement. Si jamais vous l'essayez vous-même, faites-nous savoir comment cela s'est passé.

11voto

ctrlShiftBryan Points 5620

Cela a fonctionné (en ignorant tous les délais d'attente) :

<script type="text/javascript"> 
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) { 
            if (args.get_error() && args.get_error().name === 'Sys.WebForms.PageRequestManagerTimeoutException') { 
                            args.set_errorHandled(true); 
            } 
        }); 
    </script>

0 votes

J'obtiens l'erreur avec le code ci-dessus. ReferenceError: Sys is not defined

9voto

rajalingam Points 21

Veuillez suivre les étapes ci-dessous :

Étape 1 : Dans web.config ensemble httpRuntime maxRequestLength="1024000" executionTimeout="999999"

Étape 2 : Ajoutez le paramètre suivant au ScriptManager de votre page Web : AsyncPostBackTimeout ="360000"

Cela résoudra votre problème.

2voto

Bravax Points 7698

Cela peut être configuré en modifiant le délai d'attente ASP script dans IIS.

Il se trouve dans les propriétés de votre site web, répertoire virtuel, bouton de configuration, puis dans l'onglet options.

ou le définir en fixant la propriété Server.ScriptTimeout.

0 votes

Server.ScriptTimeout est pour le script normal ou pour l'async ?

0 votes

Script normal, pas script asynchrone.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X