У самого DI нет ошибок. Или, точнее, это будет похоже на перечисление общего программирования полученных ошибок, как на передачу пустой ссылки, а затем на ее отсутствие.
при рекурсивной сборке ViewState потерян
«Наращивание», как говорят некоторые контейнеры, как правило, плохая идея, и ее следует избегать, когда это возможно. Взгляните на Windsor FAQ по каким-то веским причинам против накопления. Это относится ко всем контейнерам IoC.
В частности, в вашем случае кажется, что происходит то, что наращивание происходит после LoadViewState () элемента управления (или LoadPageStateFromPersistenceMedium ()) страницы, поэтому он делает состояние представления недействительным. Возможно, ваш контейнер IoC предоставляет базовый класс управления, который уже позаботился об этом, и вы забыли его унаследовать.
ИМХО, работа с DI в WebForms настолько хакерская (именно в этом случае, например), что я предпочитаю прибегать к расположению службы (только для страниц и элементов управления WebForms!). Просто, и никаких странных взломов не требуется.
Теперь, IoC + DI может иметь некоторые ошибки, например проблемы жизненного цикла / объема. Игорь Брейц очень подробно описывает это в этой статье . Вы должны иметь это в виду, особенно в сложных / больших приложениях с большим количеством компонентов.