2009-05-26 11 views
5

Ich habe eine Seite, die ein paar Minuten dauert. Wenn ich debug="false" in dem Tag <compilation /> in web.config einstelle, erhalte ich eine "Zeitüberschreitung der Anfrage". Fehler (und interne try/catch-Blöcke in meinem Code bekommen einen „Thread wurde abgebrochen.“ -Fehler."Zeitüberschreitung der Anfrage" Fehler beim Setzen von debug = "false"

Was das Update ist lange Seiten zu ermöglichen, im Produktionsmodus laufen zu lassen? Hat Debug-Modus hat eine unendliche Timeout?

+0

Sind Sie sicher, dass Sie eine Seite benötigen, die ein paar Minuten dauert laufen? Können Sie diese Funktionalität nicht in eine von Ihnen geplante Konsolenanwendung verschieben? – sisve

+0

Ehh ... es ist nur über ein Webformular für die Benutzerfreundlichkeit zugegriffen. Es ist eine geschützte Seite und eine geplante Aufgabe trifft sie jede Nacht. Die "richtige" Sache zu tun ist wahrscheinlich diese Aufgaben über einen Windows-Dienst oder etwas zu kicken, aber wenn es nicht pleite ist, arbeiten an etwas, das tatsächlich helfen könnte, Umsatz zu generieren :) – JerSchneid

Antwort

5

Sie sollten nur das Skript-Timeout für Seitenausführungen erhöhen. Der Standardwert ist 90 Sekunden, so dass, wenn Sie mehr Zeit benötigen, ändern Sie in der folgenden system.web Element (executionTimeout Attribut):

<httpRuntime executionTimeout="seconds" 
      maxRequestLength="kbytes" 
      minFreeThreads="numberOfThreads" 
      minLocalRequestFreeThreads="numberOfThreads" 
      appRequestQueueLimit="numberOfRequests" 
      useFullyQualifiedRedirectUrl="true|false" /> 
+0

Zusätzlich zur Erhöhung der Zeitüberschreitung können Sie auch möchte in die asynchrone Erstellung der Seite schauen. Eine lange laufende Seite im synchronen Modus verbraucht für die Dauer einen Thread. Indem Sie async machen, geben Sie diesen ASP.NET-Thread frei, damit er andere Anforderungen verarbeiten kann, während im Hintergrund ein zusätzlicher Thread generiert wird, um Ihre lang andauernde Anfrage zu bearbeiten. Heutzutage sind asynchrone ASP.NET-Seiten ziemlich einfach zu verwenden. – jrista

5

Sie können die max Dauer für Anfragen in web.config:..

<system.web> 
    ... 
    <httpRuntime executionTimeout="600" /> 

Wo executionTimeout die maximale Anzahl von Sekunden angibt, dass eine Anforderung von ASP.NET automatisch heruntergefahren ausführen darf, bevor sie Einzelheiten können gefunden werden here

Verwandte Themen