2013-03-19 2 views
0

Я только что обновил ASP.NET MVC 3 до ASP.NET MVC 4 с .NET 4.5, а корневые контроллеры работали, но контроллеры в MVC Area начали давать 404 ошибок.Обновление с ASP.NET MVC 3 до ASP.NET MVC 4 приводит к ошибкам 404

Я искал патч IIS 7 QFE, но он не применим к окнам 8. Установив точки останова, я мог видеть, что область была успешно зарегистрирована, а также после полной регистрации я вижу 4 маршрута, зарегистрированных в коллекции маршрутов и сначала один - маршрут, соответствующий области. Но любой запрос для URL области просто падает до 404 ошибки.

ответ

0

Я оставляю этот ответ всем, кто сталкивается с проблемой во время обновления.

У меня был бизнес-логика библиотеки (различные библиотеки классов .NET), которая была составлена ​​на ASP.NET MVC 3.

Если вы используете какие-либо ссылки на другие библиотеки, которая была составлена ​​на ASP.NET MVC 3 в ASP.NET MVC 4, тогда веб-сервер не вызывает никаких ошибок, но вместо этого он не может загружать контроллеры, зависящие от внешней библиотеки, поэтому вместо того, чтобы показывать ошибку загрузки, он просто выдает ошибку 404, поскольку предполагает, что контроллер не найдено.

Контроллеры, определенные в той же области, хорошо работали, если они не зависели от внешней библиотеки, скомпилированной с MVC3.

Вкратце «Любой контроллер, в зависимости от типов из любой библиотеки, скомпилированной с MVC3, не загружается, а ошибка 404 будет повышена».

В идеале это должно было вызвать ошибку.

+0

На самом деле это имеет смысл. Когда вы работаете в качестве приложения MVC4, регистрация областей приведет к тому, что он будет искать определенные соглашения как для наследования, так и для наследования типов, и, насколько это было важно, у вас не было классов по вашему внешнему проекту, которые наследовались от MVC4, который он искал, поэтому он предполагает, что сборка не имеет в ней области, не регистрирует никаких маршрутов и дает стандартное сообщение 404. –

+0

Моя область не была во внешнем проекте, моя область была в том же веб-приложении MVC4, проблема заключалась в том, что только какой-то контроллер, который был получен из некоторых типов, определенных во внешнем проекте, который был скомпилирован против MVC3, не работал. Другие контроллеры в том же районе работали правильно. –

Смежные вопросы