Увольнение нескольких событий Application_Start
Я отлаживаю приложение ASP.NET 2.0, которое страдает от медленной загрузки начальной страницы.
С помощью добавления журнала я обнаружил, что событие Application_Start
срабатывает дважды при запуске с небольшой задержкой между этими двумя событиями. Событие Session_Start
также срабатывает дважды, с тем же значением идентификатора сеанса.
например.
[Header]
2010-09-10 14:52:36.331 INFO Web.Global.Application_Start START
2010-09-10 14:52:37.409 INFO Web.Global.Session_Start Session.SessionID=xxqjvun2ce2yqsumq1hfoj45
[Header]
2010-09-10 14:53:10.028 INFO Web.Global.Application_Start START
2010-09-10 14:53:10.325 INFO Web.Global.Session_Start Session.SessionID=xxqjvun2ce2yqsumq1hfoj45
Я запускаю это на своей локальной машине под IIS 5.1. В проекте также используется ASP.NET MVC, а используемый URL-адрес страницы aspx изменяется с использованием маршрутизации, используя технику, показанную на сайте Phil Haack.
Любые предложения о том, что может это сделать?
Ответы
Ответ 1
В конце концов мы поняли, что это связано с нашей конфигурацией IIS.
Некоторое время назад было принято решение переименовать виртуальный каталог, используемый для этого веб-сайта. Это было сделано путем добавления всей новой конфигурации виртуального каталога, оставив предыдущий на месте. По сути, у нас было два виртуальных каталога, указывающих на одно и то же приложение ASP.NET!
Переход к новому виртуальному каталогу никогда не завершался, поэтому части веб-сайта все еще ссылались на старый. Следовательно, два события Application_Start
...
Исправление должно было измениться на установку старого виртуального каталога в IIS для перенаправления на URL с URL-адресом, установленным в /NewVirtualDirectory $S $Q
Ответ 2
У нас была аналогичная ситуация, только чтобы обнаружить, что это произошло потому, что мы сделали переименование сборки и имели две копии одного и того же кода, ссылающиеся на эту сборку, версиюA.dll и versionB.dll. Из-за этого его дважды вызывали!
Ответ 3
В моих опытных (после нескольких часов исследованиях и тоннах кодирования), которые исходят от
undeleted SQLite.Interop.dll в папке x64
Я удалил с помощью управления файлами с панели хостинга вместо FTP (FileZilla) и нескольких Application_Start
событий, уволенных:-) Корневые причины проблем были неопровержимыми. Процесс Quartz.Net, подключенный к этой DLL.