2009-06-29 10 views
5

Y at-il un délai d'attente par défaut lorsque j'appelle un PageMethod à partir d'un javascript sans spécifier explicitement le délai d'expiration, si oui, qu'est-ce que c'est?PageMethod timeout par défaut

Merci

Répondre

6

L'objet standard XMLHttpRequest n'a pas de mécanisme de temporisation intégré. Les requêtes Ajax continueront indéfiniment car il n'y a pas de moyen standard d'expiration. Il y a cependant des façons dans lesquelles you can get around this, ce que je suppose est ce que ASP.NET fait dans leur cadre.

IE8 est le seul navigateur avec un built-in timeout property, donc je suppose que leur framework Ajax serait compatible avec cela. Dans ce cas, le délai d'attente serait indéfini par défaut. ASP.NET a également une propriété AsyncTimeout pour les tâches de pages asynchrones, il est donc possible que le cadre expire (côté serveur) en 45 secondes, ce qui est la valeur par défaut pour les tâches asynchrones dans les pages ASP.NET.

Il ne semble pas y avoir de délai par défaut de ce que j'ai pu trouver. Si j'étais vous, je ne compterais pas sur la longueur du délai d'expiration par défaut. Vous devriez spécifier votre propre longueur si vous êtes préoccupé par les délais d'attente. Les délais d'attente peuvent être indéfiniment longs par défaut. Les utilisateurs n'attendront pas indéfiniment longtemps, il est donc préférable de définir le délai d'expiration comme l'attente maximale à laquelle un utilisateur doit faire face (en fonction du contexte).

MISE À JOUR
J'ai créé une page de test avec une méthode Page qui prendra 65 minutes pour charger (en utilisant Thread.Sleep()). L'appel de méthode de page a attendu les 65 minutes complètes, il semble donc que mon hypothèse était correcte. Les méthodes de page ont non expirer par défaut, ou si c'est le cas, le délai d'attente est supérieur à 1 heure. N'oubliez pas que les machines de développement locales disposent effectivement d'un délai d'expiration infini pour le serveur, ce qui permet à ASP.NET de laisser un script s'exécuter indéfiniment. Par défaut, le délai d'attente d'exécution ASP.NET pour les configurations de production est between 90 and 110 secionts seconds en fonction de la version .NET que vous exécutez.

+0

Je voudrais pouvoir doubler plus haut! –

+0

quelle version .NET utilisiez-vous? 3.5? – mlhDev

+0

@Matthew La valeur par défaut de AsyncTimeout n'a pas changé depuis la version 2.0. Tout jusqu'à, y compris 4.0 utiliser la même durée de délai d'expiration par défaut. –