MilkyCoder
@MilkyCoder
Гений

ASP.Net Жутчайшая мистика с ThreadAbortException?

Привет всем,

Не хочу особо вдаваться в детали, суть вопроса такова, у меня есть оооочень тяжелая функция которая много пишет в файл, порядка гига или больше, вся эта операция выполняется несколько минут. И раньше все было хорошо, когда все это дело выполнялось в контексте запроса. Но как только я решил сделать это асинхронно, что бы вести логи выполнения задачи, так я приятно удивился, что IIS прибивает мою задачу хоть раком хоть передом. Т.е. я использовал и Task.Run и вручную поток создавал, а IIS все ниже яиц, он прибивает и все. Я просто думаю ну как ... так можно делать, я бы руки МСовски программистам повырывал. Вобщем 10 часов отладки нихрена не дали результат, валится просто в любом месте, я думал может там какая ошибка, а нет, просто рендом и все. Единственное что удалось узнать, что сразу перед ThreadAbortException происходит Application_End в Global.asax.cs . Может памяти не хватает, может еще чего то, но не понятно почему в контексте запроса все работает. Кто сталкивался с подобной проблемой, и как сделать поток с моей мега супер важной задачей неубиваемым?

Нашел ответ на свой вопрос здесь:
haacked.com/archive/2011/10/16/the-dangers-of-impl...
Если вкратце то ASP.NET не любит длинных задач, а задачи вызванные не запросами, вобще за белых людей не считает и прибивает их как насекомых... Надеюсь ситуация в vNext будет другой.
  • Вопрос задан
  • 2417 просмотров
Пригласить эксперта
Ответы на вопрос 2
onyxmaster
@onyxmaster
Программист, ненастоящий сисадмин
Согласен с Василий, но если очень хочется, то в .NET 4.5.2 есть HostingEnvironment.QueueBackgroundWorkItem.
Ответ написан
dabrahabra
@dabrahabra
.NET Developer
Согласен с Василий на все 100%. Тем более на shared хостинге Вам не позволят выполнять тяжелые задачи в контектсе запроса. И даже QueueBackgroundWorkItem Вам врятли поможет. И это не исправят в vNext или любой другой версии .NET Амперметром и вольтметром вы тоже гвоздь на забъетё - не умеете пользоваться молотком, наймите того кто умеет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы