Question

Je fais une demande à partir d'un UpdatePanel qui prend plus de 90 secondes. Je reçois cette erreur de timeout:

  

Erreur d'exécution Microsoft JScript:   Sys.WebForms.PageRequestManagerTimeoutException: la demande du serveur   expiré.

Quelqu'un sait-il s'il existe un moyen d'augmenter le délai avant l'expiration de l'appel?

Était-ce utile?

La solution

Il existe une propriété sur le ScriptManager:

AsyncPostBackTimeout="300"

Autres conseils

Dans mon cas, l'objet ScriptManager a été créé dans un fichier Page maître qui a ensuite été partagé avec les fichiers de page de contenu. Par conséquent, pour modifier la propriété ScriptManager.AsyncPostBackTimeout dans la page de contenu, je devais accéder à l'objet du fichier aspx.cs de la page de contenu:

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

Cela a été efficace (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> 

Veuillez suivre les étapes ci-dessous:

Étape 1: dans web.config , définissez 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.

Cela peut être configurable en modifiant le délai d'expiration du script ASP dans IIS.

Il se trouve dans les propriétés de votre site Web, du répertoire virtuel, du bouton de configuration, puis de l’onglet Options.

ou définissez-le en définissant la propriété Server.ScriptTimeout.

Eh bien, je suppose que cela fonctionnerait si vous voulez juste que la demande soit rejetée avec le potentiel qu’elle ne soit jamais complètement exécutée ...

Ajoutez une propriété AsyncPostBackTimeOut à la balise ScriptManager pour modifier le délai d'attente par défaut de 90 secondes à une valeur plus raisonnable pour votre application.

En outre, envisagez de changer le service Web qui reçoit l'appel afin de le déplacer plus rapidement. 90 secondes peuvent aussi bien représenter l'infini du temps passé sur Internet.

Le problème que vous rencontrez est lorsque votre application a un délai d'expiration pour une requête de base de données SQL. Cela prend plus de temps que la valeur par défaut pour renvoyer la sortie. Vous devez donc augmenter la propriété ConnectionTimeout.

Vous pouvez le faire de plusieurs manières:

  1. Une chaîne de connexion a une propriété ConnectionTimeout . C'est une propriété qui détermine le nombre maximal de secondes pendant lequel votre code attendra qu'une connexion de la base de données soit ouverte. Vous pouvez définir le délai de connexion dans la section chaîne de connexion dans web.config .

    <connectionstrings>
        <add name="ConnectionString" 
             connectionstring="Database=UKTST1;Server=BRESAWN;uid="      system.data.sqlclient="/><br mode=" hold=" /><br mode=" html="> <asp:ToolkitScriptManager runat=" server=" AsyncPostBackTimeOut=" 6000="><br mode=">
        </add>
    </connectionstrings>
    
  2. Vous pouvez mettre AsyncPostBackTimeout = "6000" dans la page .aspx

    <asp:ToolkitScriptManager runat="server" AsyncPostBackTimeOut="6000">
    </asp:ToolkitScriptManager>
    
  3. Vous pouvez définir le délai d’expiration dans SqlCommand , où vous appelez la procédure stockée dans un fichier .cs.

    command.CommandTimeout = 30*1000;
    

J'espère que vous avez une solution!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top