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

  • разработка и отладка приложения на машине разработчика
  • cборка проекта с помощью aspnet_compiler
  • коирование на тестовый сервер

На этих шагах все работает отлично, а дальше получаем стандартную желтую страницу с ошибкой о невозможности найти нужный класс. В данном случае проблема была со страницей восстановления пароля, на которой находился только компонент PasswordRecovery. Т.к. проект был собрал в release-версии, отадка была сильно затруднена.  Далее выяснилось, что класс, реализующий эту страницу тоже назывался PasswordRecovery. Таким образом, компиляция происходит успешно, но на этапе выполнения происходит исключение. Проблема состоит в том, что в одной области видимости появляется два класса с одним именем, и .net не знает какой класс нужно использовать.

Для решения проблемы следует либо обращатся к классам с указанием namespace (System.Web.UI.WebControls.PasswordRecovery), либо переименовать ваш класс (UserPasswordRecovery).