Я просто подталкивал веб-сайт к производству, который отлично работал в среде QA. Патч включал обновления зависимостей DLL и некоторые скрипты базы данных.
Я остановлюсь на погоне и объясню ошибку, которая заняла у меня 4 часа, чтобы понять. Один из моих сценариев базы данных создал хранимую процедуру, в которой отсутствовал [dbo] перед ее именем. Поэтому вместо того, чтобы стать [dbo]. [MyProcedure], он стал [shawn]. [MyProcedure]. Когда скрипт выполнялся из кода через библиотеку System.Data.SqlClient, он уничтожал весь рабочий процесс ASP.NET. Это заставило приложение перезапустить и перенаправить меня обратно на экран входа в систему. Процедура была вызвана только условно и довольно редко, поэтому ее было трудно воспроизвести.
Поскольку отнимал весь рабочий процесс ASP.NET, его было крайне сложно отладить. Я не мог поймать ошибку. В конце концов я заметил это в журнале событий Windows:
Exception: System.Runtime.Serialization.SerializationException
Message: Unable to find assembly 'Shawn.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null'.
(Примечание: корневое пространство имен переименовано для защиты невинных.)
А потом, через 2 секунды:
EventType clr20r3, P1 w3wp.exe, P2 6.0.3790.3959, P3 45d6968e, P4 mscorlib, P5 2.0.0.0, P6 4889dc80, P7 4687, P8 4b, P9 shawn.data.dataaccess, P10 NIL.
В этот момент я подумал, что это была несовпадающая версия сборки, GAC конфликт? или что-то подобное. Я проверял все ссылки на протяжении всего проекта и пробовал множество разных вещей. В конце концов я искал все ссылки на пространство имен Shawn.Data.DataAccess и регистрировал файл каждые несколько строк, чтобы найти, где происходит сбой приложения. Это привело меня к правильной хранимой процедуре.
TLDR : Почему отсутствие [dbo] в одном скрипте приводит к сбою всего рабочего процесса ASP.NET?