2008-12-01 2 views
1

Я получаю сообщение «Thread is aborted» Exception на странице ASP.NET. Я вообще не использую какой-либо метод Response.Redirect/Server.Transfer. Может ли кто-нибудь помочь мне решить эту проблему?Тема прерывалась

+0

Stack trace? Пример кода, вызывающего исключение? Вы вызываете Response.End? Пожалуйста, отредактируйте вопрос с ответами и не загромождайте раздел ответов (этот сайт не является форумом, а ответы не всегда перечислены в хронологическом порядке). – StingyJack 2008-12-01 17:50:57

ответ

1

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

1

плохо решение использует

Response.Redirect(URL, False) 

который заставит не к Response.End() текущей страницы, однако будьте осторожны, это может привести проблемы, потому что остальная часть страницы будет получить казнены и может привести к ошибке логина входа и аналогичных вопросов безопасности и производительности.

Edit: Видимо, вы не используете Response.Redirect и вы не можете поймать AbortThreadExecution с Try Лови, что означает этот ответ совершенно бесполезно сейчас :)

Хотя в состоянии получить ответ, вам нужно узнать как задать вопрос. Вы должны предоставить информацию, такую ​​как:

  • Сведения об исключении
  • Когда, каковы симптомы
  • Что вы пробовали и не получилось
  • Вы управлять изолят проблема?
+0

вы не можете поймать ThreadAbortException и предотвратить его повторное включение – TheSoftwareJedi 2008-12-01 17:15:56

+0

Обратите внимание, что вы можете поймать исключение, но оно будет восстанавливаться после выхода из блока catch. @Несмотря, вам лучше удалить этот ответ и сделать несколько комментариев, запрашивающих дополнительную информацию. – TheSoftwareJedi 2008-12-01 17:40:09

0

Ошибка: Тема прерывалась. в System.Threading.Thread.AbortInternal() в System.Threading.Thread.Abort (Object stateInfo) в System.Web.HttpResponse.End()

Эта ошибка возникает главным образом, если вы используете Response.End, Response.Redirect или Server.Transfer

Причина: метод Response.End завершает выполнение страницы и сдвигает выполнение в случае Application_EndRequest в трубопроводе событий приложения. Строка кода, которая следует за Response.End, не выполняется.

Эта проблема возникает в методах Response.Redirect и Server.Transfer, потому что оба метода вызывают Response.End внутренне.

Разрешения/Решение:

Вы можете использовать примерочные поймать заявление поймать это исключение

или

Для Response.End, вызовите метод HttpContext.Current.ApplicationInstance.CompleteRequest вместо Response.End, чтобы обойти выполнение кода для события Application_EndRequest. Для Response.Redirect используйте перегрузку Response.Redirect (String url, bool endResponse), которая передает false для параметра endResponse для подавления внутреннего вызова Response.End. Например: ex: Response.Redirect («следующая страница.aspx ", false); Если вы используете это обходное решение, выполняется код, следующий за Response.Redirect. Для Server.Transfer вместо этого используйте метод Server.Execute.

Смежные вопросы