Je reçois un intermittent "System.Web.HttpException: la requête a expiré." erreur lorsque mon code frappe la response.write ligne():"System.Web.HttpException: délai d'attente de la demande." erreurs sur Response.write
sMessage = "Searching...0% complete."<br>
sSetVal = "<script>document.getElementById('MessageDiv').innerHTML='" & sMessage & "';</script>"<br>
Response.write(sSetVal)
Notez que Response.BufferOutput = false est définie lorsque la page commence à exécuter (bien avant que le code ci-dessus exécute).
Le code est utilisé pour mettre à jour un message de progression tandis que d'autres threads exécutent des processus de longue durée. Un thread s'exécute en continu et vérifie l'état des autres threads. Au fur et à mesure que les autres threads terminent, ce thread envoie des messages d'état mis à jour à l'utilisateur final. Je me rends compte que cela pourrait (devrait) être recodé en utilisant ajax, mais c'est une application héritée et ce n'est pas une option pour le moment.
Ce code est exécuté 10 000+ fois par jour, et l'erreur se produit environ 5 fois. Je pense donc que l'objet de réponse est bloqué par d'autres threads lorsque le site Web est occupé. Cependant, je ne connais pas les compteurs de performance à vérifier dans le moniteur de performances. Ou ce problème est-il causé par autre chose? J'utilise IIS 6, asp.net v2 et vb.net
Veuillez publier l'exception complète, y compris toutes les InnerException, en interceptant l'exception et en postant ex.ToString(). –
Merci pour la réponse rapide. Jusqu'à maintenant, je venais d'utiliser:
Server.GetLastError().ToString()
dans le sous-menu Application_Error. et la sortie pour cette erreur a seulement étéSystem.Web.HttpException: Request timed out.
Toutes les autres erreurs ont la pile d'appel complet, mais pas celle-ci. J'ai ajouté le .InnerException à mes rapports d'erreur, et je verrai quoi d'autre est rapporté. Je vide l'emplacement actuel vers l'objet Session, puis je le vérifie lorsque l'erreur se produit. C'est ainsi que je sais qu'il échoue sur le fichier response.write sans une pile d'appels complète. –OK - l'erreur s'est produite à nouveau. L'expiration interne est vide. Le seul message d'erreur est "System.Web.HttpException: la requête a expiré". à partir de Server.GetLastError(). ToString(). –