CS0115: 'ASP.views_user_index_aspx.GetTypeHashCode()': не найден метод, пригодный для переопределения
Честно признаться, ошибки подобные этой происходят довольно часто (вначале, я думал именно так) и легко отлавливаются либо цепким взглядом разработчика, либо отладчиком.
С первым у меня вышел пролет, т.к. даже после отката всех изменений, внесенных в код, результат был тем же. Да и сами изменения были незначительными (добавлен новая функция в контроллер, добавлено новое поле в таблицу БД и добавлено новое представление). Отладчик, к полному моему разочарованию, тоже оказался бесполезен. По средству Intellitrace было установлено, что ошибка происходит где-то во внешнем коде (а именно во временных файлах, созданных при компиляции).
Попробовал удалить все содержимое Bin каталога и временные файлы из сообщения об ошибке, не помогло.
Попробовал создать новый проект и постепенно вносить в него мой код. Успешно подключил IoC (при отладке вылезало исключение именно от него, но это, конечно, просто внешние проявления), скопировал библиотеку, реализующую репозиторий для работы с БД, скопировал код из контроллеров в новый контроллер по умолчанию. Пока все работает. Переименовал класс и файл из HomeController в UserController. Возникла ошибка, похожая на изначальную.
Воспользовался Google, в русскоязычном секторе вообще ничего, на англоязычных упоминания о том, что подобная ошибка может возникать при переименовании файлов с кодом (хотя в изначально я файлы не переименовывал).
В конечном счете, решил создать новое представление для метода, на который жаловался компилятор (ASP.views_user_index_aspx.GetTypeHashCode()')
И тут я заметил, что в этом представлении есть одно отличие (за исключением того, что он пустой, конечно) от моего рабочего (т.е. нерабочего варианта)
В новом представлении было так
Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage
А в старом вот так:
Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewUserControl
Изменил этот кусок кода и все заработало. Видимо дело было в том, что я еще и заменил тип представления с Dinamic, на строготипизированное, а потом забыл про это. Хотя действительно странно, что такое действие вызывает столь трудно отлавливаемую ошибку.
Спасибо большое за статью. Очень помогло)
ОтветитьУдалитьСпасибо!
ОтветитьУдалитьТоже пригодилось:)