Ich erhalte eine intermittierende "System.Web.HttpException: Zeitüberschreitung der Anfrage." Fehler, wenn mein Code die Zeile response.write Hits():"System.Web.HttpException: Zeitüberschreitung der Anforderung." Fehler bei Response.write
sMessage = "Searching...0% complete."<br>
sSetVal = "<script>document.getElementById('MessageDiv').innerHTML='" & sMessage & "';</script>"<br>
Response.write(sSetVal)
Beachten Sie, dass Response.BufferOutput = false gesetzt, wenn die Seite zum ersten Mal startet die Ausführung (na ja, bevor der obige Code ausführt).
Der Code wird verwendet, um eine Fortschrittsnachricht zu aktualisieren, während andere Threads lang andauernde Prozesse ausführen. Ein Thread wird kontinuierlich ausgeführt und überprüft den Status der anderen Threads. Wenn die anderen Threads fertig sind, gibt dieser Thread aktualisierte Statusmeldungen an den Endbenutzer aus. Mir ist klar, dass dies mit Hilfe von Ajax rekodiert werden könnte, aber es ist eine Legacy-App, und das ist im Moment keine Option.
Dieser Code wird mehr als 10.000 Mal am Tag ausgeführt, und der Fehler tritt nur etwa 5 mal auf - so vermute ich, dass das Antwortobjekt von anderen Threads blockiert wird, wenn die Website beschäftigt wird. Ich weiß jedoch nicht, welche Leistungsindikatoren im Leistungsmonitor überprüft werden sollen. Oder wird dieses Problem durch etwas anderes verursacht? Ich benutze IIS 6, asp.net v2 und vb.net
Bitte posten Sie die vollständige Ausnahme, einschließlich aller InnerException, indem Sie die Ausnahme abfangen und dann ex.ToString() posten. –
Danke für die schnelle Antwort. Bis jetzt habe ich gerade verwendet:
Server.GetLastError().ToString()
in der Application_Error Sub. und die Ausgabe für diesen Fehler ist nurSystem.Web.HttpException: Request timed out.
Alle anderen Fehler haben die vollständige Aufrufliste, aber nicht diese. Ich habe die Fehlermeldung .InnerException zu meiner Fehlerberichterstattung hinzugefügt, und ich werde sehen, was sonst noch gemeldet wird. Ich habe den aktuellen Speicherort auf das Session-Objekt gespeichert und dann überprüft, wenn der Fehler auftritt. Das ist, wie ich weiß, dass es auf der Antwort scheitert. Schreibe ohne einen vollen Anruf-Stapel. –OK - der Fehler ist erneut aufgetreten. Die innere Wahrnehmung ist leer. Die einzige Fehlermeldung ist "System.Web.HttpException: Zeitüberschreitung der Anforderung." von Server.GetLastError(). ToString(). –