Global.asax не запускается для сборки Release - PullRequest
4 голосов
/ 01 мая 2009

В одном из наших приложений есть механизм автоматической отправки по электронной почте справочной службы в случае возникновения определенного исключения. Одно конкретное исключение, NullReferenceException, вызывает несколько проблем, и я считаю, что это вызвано перезаписью IIS и потерей сеанса. Чтобы доказать это, я хочу войти, когда приложение запущено / остановлено / переработано, и добавил некоторый код в файл global.asax, чтобы сделать это. При работе в режиме отладки сообщения журнала записываются, и все выглядит хорошо. Проблема возникает, когда я переключаюсь на сборку выпуска, которая запускает проект веб-развертывания для создания папки, настроенной в IIS.

При переходе к приложению метод ApplicationStart не вызывается, поскольку файл журнала не создается, а журнал событий не обновляется. Когда я перезагружаю IIS, то же самое происходит для ApplicationEnd, то есть не создаются журналы.

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

Заранее спасибо

** [Редактировать]: Я не уверен на 100%, что происходит, но теперь, похоже, работает. Я подумал, что, возможно, сборка, которую мы используем для ведения журнала, может не загрузиться ко времени выполнения ApplicationStart, поэтому я удалил весь код и вместо этого просто создал текстовый файл в методе. Вот, файл был создан! Поэтому я добавил проверку типа if (logger! = Null), чтобы попытаться вывести некоторую диагностику, но ничего не было записано. Поэтому я попробовал попробовать / поймать и написал пустой файл «exception.txt», если было сгенерировано исключение, но файл все еще не был создан - хотя журнал событий и ожидаемый файл журнала были сгенерированы! Я не совсем понимаю! **

Ответы [ 5 ]

11 голосов
/ 13 мая 2009

У нас была эта проблема, и отсутствующий файл PrecompiledApp.config был решением. Без этого события global.asax не запускались в IIS6 с использованием фильтра ISAPI и документированного подхода rewritten.aspx , например. на blog.codeville.net. Мы используем msbuild для предварительной компиляции сайта перед его развертыванием.

Мы поцарапали наши головы над этим в течение нескольких часов, когда наши сборки перестали работать. Оказывается, находясь в одержимом режиме ведения домашнего хозяйства, я удалил этот файл из системы контроля версий, так как считал его избыточным. Добавление его обратно в исправило проблему.

5 голосов
/ 01 мая 2009

Если вы публикуете приложение, проверьте PrecompiledApp.config файл. Если вы удалите этот файл из папки опубликованного сайта, события перестанут срабатывать.

1 голос
/ 01 мая 2009

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

0 голосов
/ 17 декабря 2015

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

  1. Global.asax не публикуется, и событие не запускается в Global.asax
  2. Почему события Global.asax не запускаются на моем веб-сайте ASP .NET?
  3. global.asax работает на локальном компьютере, но не после публикации на сервере
  4. Загадка Global.asax в приложении ASP.NET MVC

Мы также попытались поместить указанные ниже файлы в каталоги root и bin.

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

Ничего из этого не сработало!

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

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

0 голосов
/ 05 октября 2015

Если вам нужно избегать PrecompiledApp файла и публиковать Global.asax , перейдите к публикации и перейдите на вкладку настроек внизу и снимите флажок прекомпиляции во время публикации .

Любимый образ поможет вам enter image description here

...