Привет всем,
Не хочу особо вдаваться в детали, суть вопроса такова, у меня есть оооочень тяжелая функция которая много пишет в файл, порядка гига или больше, вся эта операция выполняется несколько минут. И раньше все было хорошо, когда все это дело выполнялось в контексте запроса. Но как только я решил сделать это асинхронно, что бы вести логи выполнения задачи, так я приятно удивился, что IIS прибивает мою задачу хоть раком хоть передом. Т.е. я использовал и Task.Run и вручную поток создавал, а IIS все ниже яиц, он прибивает и все. Я просто думаю ну как ... так можно делать, я бы руки МСовски программистам повырывал. Вобщем 10 часов отладки нихрена не дали результат, валится просто в любом месте, я думал может там какая ошибка, а нет, просто рендом и все. Единственное что удалось узнать, что сразу перед ThreadAbortException происходит Application_End в Global.asax.cs . Может памяти не хватает, может еще чего то, но не понятно почему в контексте запроса все работает. Кто сталкивался с подобной проблемой, и как сделать поток с моей мега супер важной задачей неубиваемым?
Нашел ответ на свой вопрос здесь:
haacked.com/archive/2011/10/16/the-dangers-of-impl...
Если вкратце то ASP.NET не любит длинных задач, а задачи вызванные не запросами, вобще за белых людей не считает и прибивает их как насекомых... Надеюсь ситуация в vNext будет другой.