Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Событие Application_Start не срабатывает при публикации

Автор вопроса: Ashish KumarОтветов: 3

Я много изучал, но ничего не нашел...

Application_Start событие не срабатывает при публикации сайта. Однако он отлично работает на локальном хосте. После публикации я получил App_global.asax.dll и App_GlobalResources.compiled в папке Bin, а также PrecompiledApp.config в корне.

global-asax

Ответы

Ответ 1 · рейтинг 4 · masoud ramezani

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

возможно, вам поможет перезапуск пула приложений.

Ответ 2 · Matías Fidemraizer

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

Другой возможной причиной является то, что он срабатывает, но в обработчике Application_Start выдается какое-то исключение, и, поскольку оно вызывается один раз за жизненный цикл приложения, вам потребуется перезапустить пул приложения или перезапустить весь IIS.

Ответ 3 · sisve

Ваш код, указанный в других комментариях:

protected void Application_Start(Object sender, EventArgs e) {
    logfile.ErrorLog("UserErrorLog\\UserErrorLog.txt", "Application_Start method executed at " + System.DateTime.Now);
    DoSomeWork();
    logfile.ErrorLog("UserErrorLog\\UserErrorLog.txt", "Application_Start method execution ends at " + System.DateTime.Now);
}

Запись в UserErrorLog\\UserErrorLog.txt будет проблематичной при обычной настройке IIS, она попытается записать куда-нибудь в %SYSTEMROOT%\System32\Inetsrv, который является исполняемым каталогом IIS. Вам нужно либо указать абсолютный путь (C:\Logs\...), либо использовать HostingEnvironment.MapPath для разрешения пути на основе приложения (HostingEnvironment.MapPath("~/App_Data/Logs/..."))

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы