164

我收到以下错误:

[A]System.Web.WebPages.Razor.Configuration.HostSection 无法转换为 [B]System.Web.WebPages.Razor.Configuration.HostSection。类型 A 源自 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, 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, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 在位置 'C:\Users\MyName\AppData\Local\Temp\Temporary ASP.NET 文件\root\63e7ff36\a1cb775d\assembly\dl3\8f568c18\9b7ddacf_d04dcf01\System.Web.WebPages.Razor.dll'。

我已经在 stackoverflow 中搜索了类似的问题,并使用了他们的解决方案,但它似乎无法解决我遇到的问题。

它突然发生了,我只是按了干净的解决方案,然后弹出了这个错误。我还开始在解决方案上使用 nuget package restore。我也更新了我的包(使用更新包),所以其中一个可能与这个问题有关。

4

6 回答 6

278

我正在使用 VS2013、MVC 5.2.2.0、Web Api 2。我刚刚将Web.config的以下部分的所有版本从2.0.0.0更改为3.0.0.0 ,位于我项目的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>

问题得到解决。答对了 !!

于 2014-12-10T10:57:26.350 回答
105

只需在这个问题上加上我的两分钱。

我发现对我来说这个错误的原因是Views 文件夹web.config System.Web.WebPages.Razor, Version=2.0.0.0在其他所有内容都在使用时引用3.0.0.0

似乎 nuget-package 升级没有以某种方式考虑这个文件夹。

于 2014-12-09T10:07:07.560 回答
60

此错误的原因是 Views 文件夹中的 web.config 引用 System.Web.WebPages.Razor,Version=2.0.0.0 而不是 3.0.0.0。

通常这可能发生在 nuget-package 升级之后,这不考虑此文件夹。

更新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- aspnet-mvc-5-and-web-api-2

于 2014-04-01T19:40:07.717 回答
14

尝试了以上所有方法,直到我在项目文件夹下的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>
于 2017-04-25T18:25:10.857 回答
3

如果您使用 Route Debugger 获得此信息,则需要更新 Route Debugger 区域下 Views 文件夹中的 web.config。

于 2015-06-10T16:37:35.383 回答
1

就我而言,我还通过更新实时服务器上的Web.config解决了这个问题,VS 在升级到 MVC 5 时更新了该服务器

于 2014-12-05T05:55:13.480 回答