[A] System.Web.WebPages.Razor.Configuration.HostSection нельзя привести к… web.config проблеме

158

Я получаю следующую ошибку:

[A] System.Web.WebPages.Razor.Configuration.HostSection нельзя преобразовать в [B] System.Web.WebPages.Razor.Configuration.HostSection. Тип A происходит от «System.Web.WebPages.Razor, версия = 2.0.0.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35» в контексте «По умолчанию» в расположении «C: \ WINDOWS \ Microsoft.Net \ Assembly \ GAC_MSIL \ System». .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll. Тип B происходит от 'System.Web.WebPages.Razor, версия = 3.0.0.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35' в контексте 'По умолчанию' в расположении 'C: \ Users \ MyName \ AppData \ Local \ Temp \ Temporary Файлы ASP.NET \ root \ 63e7ff36 \ a1cb775d \ assembly \ dl3 \ 8f568c18 \ 9b7ddacf_d04dcf01 \ System.Web.WebPages.Razor.dll '.

Я искал в стеке overflow аналогичные проблемы и использовал их решения, но, похоже, это не решает проблему, с которой я столкнулся.

Это внезапно произошло, я просто нажал чистый раствор, и эта ошибка появилась. Я также начал использовать восстановление пакета nuget в решении. Я также обновил свои пакеты (используя Update-package), поэтому один из них может быть как-то связан с этой проблемой.

Максим Геринк
источник

Ответы:

274

Я использую VS2013, MVC 5.2.2.0, Web Api 2. Я только что изменил все версии с 2.0.0.0 на 3.0.0.0 следующего раздела Web.config, который находится в папке View моего проекта.

<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>

И проблема решается. Бинго!

Кунтал Гош
источник
7
Это сделало работу за меня. Спасибо!
Джозеф Вудворд
1
Это решило это для меня. Я конвертирую приложение webforms в MVC5.
Рэй
1
@guneysus, как бы вы сделали эквивалент ответа Кунтала без ручного редактирования?
TWM
@twm Обычно Update-Packageредактирует такжеweb.config
guneysus
Вот почему я так люблю!
Гомункул Ретикулли
102

Просто добавляю свои два цента к этой проблеме.

Я обнаружил, что причиной этой ошибки для меня было то, что папки Views обращались к web.config, System.Web.WebPages.Razor, Version=2.0.0.0когда все остальное использовалось3.0.0.0

Похоже, что обновление пакета nuget не учитывало эту папку.

Никлас Линдквист
источник
1
точнее! web.config в папке views.
Рохит Верма
58

Причиной этой ошибки является файл web.config в папке Views, ссылающийся на System.Web.WebPages.Razor, версия = 2.0.0.0 вместо 3.0.0.0.

Обычно это может произойти после обновления пакета nuget, который не учитывает эту папку.

Обновите Views\Web.configфайл:

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>

Для получения дополнительной информации об обновлении до MVC 5 http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to- САШ-5 MVC-и-веб-апи-2-

Максим Геринк
источник
5
это не похоже на исправление, скорее, работа вокруг меня. некоторые проекты могут быть в зависимости от mvc4 только
Стенли
12
В частности, это похоже на исправление этой ошибки в разделе «Обновление файлов web.config в папке Views». Кажется, обновление из MVC4 -> MVC5 с NuGet не обновляет автоматически номера версий в Views / Web.config.
Тайлер
Спасибо за ссылку! Было бы неплохо, если бы обновление NuGet хотя бы показало ссылку на эту страницу ...
Джедиджа
Я следовал руководству, и теперь я не могу запустить свой сайт в режиме отладки - он говорит мне "... Проект с выходным типом библиотеки классов не может быть запущен ..."
Мэтт
2
Сработало для меня, моя основная проблема была вызвана тем, что я не обновил версии в web.config в подпапке Views.
подключено программное обеспечение
13

Перепробовал все методы, описанные выше, и проблема все еще не была решена, пока я не вставил следующие строки в web.config прямо в папке проекта.

  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
Цзян Хуан
источник
3

Если вы получаете это с Route Debugger, то вам нужно обновить web.config в папке Views в области для Route Debugger.

Люк Пуплетт
источник
Спасатель. Спасибо.
6footunder
Можете ли вы уточнить это, пожалуйста.
Si8
1

В моем случае я решил эту проблему, также обновив файл Web.config на работающем сервере, который VS обновил после обновления до MVC 5.

rajeemcariazo
источник