Обязательно обновите все файлы web.configs, в том числе в каталогах View.

даю новый проект ASP.NET MVC 3 RTM и заменяю ссылки для использования ASP.NET MVC 3Исходный код

но когда я снова запускаю проект, получаю следующее исключение:

[A] System.Web.WebPages.Razor.Configuration.HostSection нельзя привести к [B] System.Web.WebPages.Razor.Configuration.HostSection. Тип A происходит из «System.Web.WebPages.Razor, версия = 1.0.0.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35» в контексте «По умолчанию» в расположении «C: \ Windows \ Microsoft.Net \ Assembly \ GAC_MSIL \ System». .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll. Тип B происходит от «System.Web.WebPages.Razor, версия = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null» в контексте «По умолчанию» в расположении «C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319». \ Временные файлы ASP.NET \ root \ 2505c7ee \ 369315c5 \ assembly \ dl3 \ f7bae428 \ d03eeed8_85bbcb01 \ System.Web.WebPages.Razor.DLL '.

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

Ошибка источника:

Line 106:        internal static RazorWebSectionGroup GetRazorSection(string virtualPath) {
Line 107:            // Get the individual sections (we can only use GetSection in medium trust) and then reconstruct the section group
Line 108:            return new RazorWebSectionGroup() {
Line 109:                Host = (HostSection)WebConfigurationManager.GetSection(HostSection.SectionName, virtualPath),
Line 110:                Pages = (RazorPagesSection)WebConfigurationManager.GetSection(RazorPagesSection.SectionName, virtualPath)

Исходный файл: E: \ GreenTour \ webpages \ src \ System.Web.WebPages.Razor \ WebRazorHostFactory.cs Строка: 108

Ответы на вопрос(4)

пока я не создал «пустышку» «базовое» приложение MVC 4, а затем сравнил web.configs, чтобы найти какие-либо изменения.

не удаляя все ссылки на сборки с открытым ключом 31bf3856ad364e35, так как это охватывает множество несоответствующих сборок.

Вместо этого это должно быть исправлено путем обновления всех ссылок конфигурации

System.Web.Mvc до 4System.Web.WebPages to 2System.Web.WebPages.Razor to 2

Обязательно обновите все файлы web.configs, в том числе в каталогах View.

когда обновлял свое приложение, проблема была в файле web.config, расположенном в каталоге views, я слепо скопировал это из старого приложения (мое плохое).

Мое решение, создайте новое приложение MVC 4 и скопируйте файл web.config из каталога views в ваше приложение, в котором возникла проблема.

Надеюсь это поможет

 dotNETbeginner26 февр. 2013 г., 05:03
+1, ваше решение работает как шарм .. :)
 Brian Reischl07 февр. 2014 г., 17:26
Полностью забыл про другие web.configs. Я смог просто изменить номера версий, а не создавать новое приложение и копировать его. Но YMMV.
 DaveHogan23 сент. 2012 г., 21:05
Спасибо - ваш комментарий "файл web.config, расположенный в каталоге views" только что дал мне "ах!" момент.
 David Keaveny05 нояб. 2012 г., 23:03
Этот. Я забыл, что в каталоге Views (и его подкаталогах) есть и другие файлы web.config.
Решение Вопроса

что часть вашего приложения компилируется с использованием вашей собственной копии исходного кода в качестве ссылки, в то время как во время выполнения он находит эталонные сборки в GAC. Убедитесь, что вы удалили все ссылки на версию GACed сборок MVC 3. Это включает в себя ряд вещей в файлах web.config, которые используют этот токен открытого ключа: 31bf3856ad364e35.

Ваш ответ на вопрос