Frage

Wir haben eine Anwendung, die E-Bücher erstellen können. Diese Anwendung hat ein Exportmodul, das eine AIR-Datei erstellt, aber diese eine Weile (einige Bücher haben 2500 Seiten) in Anspruch nehmen. Wenn wir exportieren erhalten wir die folgende Fehlermeldung:

Thread was being aborted. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Threading.ThreadAbortException: Thread was being aborted.

Source Error: 
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 

[ThreadAbortException: Thread was being aborted.]
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +501
   System.Web.ApplicationStepManager.ResumeSteps(Exception error) +564
   System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +141
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +436

Ich habe meine Laufzeit executionTimeout bis 3600 Sekunden geändert, aber es hält arround 3 Minuten abstürzt. Es wird also Zeit im Zusammenhang ... jedes Mal nähern wir uns die 3 Minuten stürzt, ich hoffe jemand kann mir helfen kann.

War es hilfreich?

Lösung

Ich denke, Paul rechts über die Ursache der Ausnahme. IIS und ASP.NET haben Einstellungen, die die maximale Höhe der Zeit eine Anforderung nehmen begrenzen. Für ASP.NET ist es in der Datei Machine.config (suchen Sie nach dem Httpruntime Element, executionTimeout Attribut). Es ist festgelegt auf 90 Sekunden auf meiner Entwicklung Maschine.

Ich würde aber raten Sie nicht diese Einstellung zu ändern, wie es da ist, um sicherzustellen, dass Ihre Anwendung auf einem schlechten Anfrage nicht hängen.

Langer Lauf Aufgaben sollten asynchrone Ausführung verwenden. Mit async Ausführung wird die eigentliche Arbeit auf einem separaten Thread abgewickelt. Dies befreit den Thread, der die Anfrage bearbeiten andere Anforderungen verarbeitet, die für die Gesamtleistung Ihrer Anwendung gut ist.

Es gibt einige gute Artikel auf dieser zur Verfügung. Zum Beispiel: http://msdn.microsoft.com/en-us/magazine /cc163725.aspx

Andere Tipps

Oft tritt dieser Fehler tatsächlich von einer OutOfMemory Ausnahme. Gibt es eine Innerexception verfügbar?

IIS hat einen 'run-away' Fadenschutz, der einen Thread / Appdomain töten wird, wenn es zu lange läuft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top