[A] System.Web.WebPages.Razor.Configuration.HostSection не может быть перенесена в... проблема с web.config

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

[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 '.

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

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

Ответ 1

Причиной этой ошибки является файл 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-

Ответ 2

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

<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>

И проблема решена. БИНГО!!

Ответ 3

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

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

Кажется, обновление nuget-пакета никак не учитывало эту папку.

Ответ 4

Пробовал все вышеприведенные методы, и проблема все еще не была решена, пока я не вставил следующие строки в 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>

Ответ 5

Если вы получите это с помощью Отладчика маршрутов, вам необходимо обновить web.config в папке "Представления" в области "Отрасль" для маршрута.

Ответ 6

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