Что происходит при замене myapp.dll на сервере?

217
18 августа 2017, 23:37

Почему не вызывается Global.asax -> Application_Start при замене myapp.dll?

Суть в том что есть задания, которые выполняются в ThreadPool. Если заменить myapp.dll выбросится ThreadAbortException. Я написал небольшой код для перезапуска этих заданий и вызываю его в Global.asax -> Application_Start. Но ничего не происходить.

Как можно это реализовать?

вот код запуска

    public static void RunAllWorkingOrDivideTasks()
    {
        try
        {
            Task[] tasks = TaskDataManager.GetAllTasks();
            if (tasks.Length > 0)
                foreach (Task task in tasks.Where(e => 
                                        e.status == TaskStatus.active || e.status == TaskStatus.divide))
                {
                    ThreadPool.QueueUserWorkItem(
                        new WaitCallback(delegate (object state)
                        {
                            Task(task.username, task.taskId);
                        }), null);
                }
        }
        catch { }
    }
Answer 1

А откуда у вас возьмутся какие-то задания при старте веб-приложения?

При замене любого бинарника IIS перезапускает веб-приложение. В ASP.NET это выглядит как выгрузка домена приложений (AppDomain). При этой операции, в том числе, очищаются любые статические поля - в том числе ваш список незавершенных задач.

Задачи, как и любые другие данные в веб-приложении, следует хранить в базе данных.

Ах да: после рестарта веб-приложение само по себе не поднимется пока к нему не придет первый запрос.

Попробуйте рецепт вот из этого ответа: При первом заходе на сайт, который крутится на IIS, сайт очень долго открывается

READ ALSO
Кривая печать из webbrowser

Кривая печать из webbrowser

Вывожу html шаблон в элемент управления webbrowser

146
Как вообще правильно удалять строки из DataTable?

Как вообще правильно удалять строки из DataTable?

Есть dataTableПеребираю строки с помощью foreach

300
Не собирается проект VS2015

Не собирается проект VS2015

При сборке проекта ошибка:

186
Аналог DataGrid в ASP.NET

Аналог DataGrid в ASP.NET

Есть простое веб приложение в котором нужно вывести несколько таблицЕсть ли в ASP

506