Почему события Global.asax не запускаются на моем веб-сайте ASP.NET?

Я разрабатываю веб-приложение ASP.NET 3.5 против Cassini, встроенного сервера веб-разработки, а не от IIS.

В моем файле Global.asax в обработчике событий Application_Start у меня есть код, который регистрирует тот факт, что веб-сайт запущен. Все это прекрасно работает с Кассини.

Поскольку развертывание сайта в виртуальном каталоге на тестовом сервере с использованием IIS6, я обнаруживаю, что записи в журнале не записываются, поэтому я заключу, что обработчик Application_Start не запускается.

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

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

Ответ 1

Если вы делаете запрос к своему приложению, тогда запускается "Application_Start"? Я не думаю, что он будет запущен до первого запроса.

Ответ 2

У меня была аналогичная проблема, и я боролся с ней несколько дней. Первой проблемой было что-то еще: файлы cookie не устанавливаются в обработчике EndRequest приложения. Наконец, я как-то понял, что проблема в том, что это событие вообще не увольняется. Понадобилось некоторое время, чтобы найти это, потому что все отлично работало на моей машине. Но на производственном сервере - тихом, как могила.

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

Настоящей причиной проблемы был отсутствующий файл global.asax на рабочем сервере.

Файл global.asax присутствовал на моем компьютере, так как там находится среда разработки. Я подготовил файл bat развертывания, который копирует файлы из папки разработки, удаляет ненужные и делает пакет. Хорошо - файл global.asax был помечен для удаления в script. После начала развертывания все проблемы исчезли.

Надеюсь, я помог.

Ответ 3

Как вы регистрируетесь? Возможно ли, что ваш компонент регистрации неправильно настроен? Для быстрого теста попробуйте сбросить исключение внутри Application_Start, и это быстро сообщит вам, будет ли возбуждено событие.

Ответ 4

В развернутой среде, что вы звоните? Причина, о которой я спрашиваю, заключается в том, что если вы вызываете веб-службу на основе WCF (заканчивающуюся на .svc), то Applicaiton_Start не запускается, поскольку вызов WCF не проходит через конвейер ASP.NET. Это не обязательно заводило бы его голову с Кассини.

Ответ 5

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

Это отсутствие соответствующих разрешений, вероятно, является причиной того, что ваше приложение работает некорректно - я бы проверял параметры безопасности для записи в журнал (возможно, вы записываете в файл журнала?).

Ответ 6

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

Ответ 7

1) iisreset/stop
2) нажмите опубликованный код в физическую папку виртуального каталога iis.
3) iisreset/начало
4) сделать веб-запрос

По-прежнему не уверен. сделайте a Thread.Sleep(60000); и присоедините с удаленным отладчиком к процессу w3wp.exe imagename.
Может быть более одного процесса с таким именем, но этот управляемый код также не мешает прикрепить к нескольким. Установите точку останова после сна. После одночасовой спячки.

Ответ 8

Я думал, что у меня была аналогичная проблема, работая над некоторыми старыми проектами, у меня создалось впечатление, что global.asax не запускался, потому что код сначала должен был бы создать мой контроллер проверки подлинности, который потерпит неудачу из-за не зарегистрированного класса ( эта часть происходит в global.asax).

Оказалось, что это произошло из-за элемента конфигурации. Когда я переместил объявление AuthenticationModule в раздел обработчика в веб-конфигурации, он отлично работал с IIS express.

В принципе, из-за элемента конфигурации другой код выполнялся до global.asax, заставляя меня поверить, что он не будет вызван.

Ответ 9

Мы много пробовали.

Мы также попытались помещать файлы ниже в директории root и bin.

  • App_global.asax.dll и файлы App_global.asax.compiled.
  • PrecompiledApp.config

Ничего из этого не получилось!

Нам нужно было поставить raw Global.asax вместо pre-compiled dll, чтобы запустить глобальные события для нашего веб-сайта asp.net 2.0.

Надеюсь, это поможет кому-то! Ура! Счастливое кодирование!: D

Ответ 10

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