Вопрос

У нас есть приложение, которое может создавать электронные книги.В этом приложении есть модуль экспорта, который создает файл AIR, но это может занять некоторое время (некоторые книги содержат 2500 страниц).Если мы экспортируем, то получаем следующую ошибку:

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

Я изменил время выполнения executiontimeout на 3600 секунд, но оно продолжает сбоить в течение 3 минут.так что это связано со временем ...каждый раз, когда мы приближаемся к 3 минутам, он выходит из строя, я надеюсь, что кто-нибудь сможет мне помочь.

Это было полезно?

Решение

Я думаю, что Пол прав насчет причины исключения.Как IIS, так и ASP.NET имеют настройки, ограничивающие максимальное количество времени, которое может занимать запрос.Ибо ASP.NET он есть в компьютере.Конфигурационный файл (ищите элемент HttpRuntime, атрибут executionTimeout).На моей машине разработки он установлен на 90 секунд.

Однако я бы не советовал вам изменять этот параметр, поскольку он предназначен для того, чтобы убедиться, что ваше приложение не зависает при сбойном запросе.

Длительно выполняющиеся задачи должны использовать асинхронное выполнение.При асинхронном выполнении фактическая работа выполняется в отдельном потоке.Это освобождает поток, обрабатывающий запрос, для обработки других запросов, что хорошо сказывается на общей производительности вашего приложения.

Есть несколько хороших статей на эту тему.Например : http://msdn.microsoft.com/en-us/magazine/cc163725.aspx

Другие советы

Довольно часто эта ошибка на самом деле возникает из-за исключения OutOfMemory.Доступно ли InnerException?

В IIS есть защита от "убегающего" потока, которая уничтожит поток / appdomain, если он будет выполняться слишком долго.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top