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