[ A ] System.Web.WebPages. Razor.Configuration. HostSection 不能强制转换为... Web.config 问题

我得到了以下错误:

[ A ]系统。网页。网页。剃刀。配置。主机节不能被强制转换 到[ B ]系统。网页。网页。剃刀。配置。主机节。类型 A 源自“ System.Web.WebPages. Razor,Version = 2.0.0.0, 区域性 = 中性,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, 区域性 = 中性,PublicKeyToken = 31bf3856ad364e35’ “默认”位置“ C: 用户 MyName AppData 本地临时 ASP.NET 文件根63e7ff36 a1cb775d 程序集 dl38f568c189b7ddacf _ d04dcf01 System. WebPages. Razor.dll’。

我在堆栈溢出中搜索过类似的问题,并使用了他们的解决方案,但似乎并没有解决我正在经历的问题。

它突然发生,我只是按下清洁的解决方案,这个错误弹出。我还开始在解决方案上使用 nuget 包恢复。我也更新了我的软件包(使用 Update-package) ,所以其中一个软件包可能与这个问题有关。

70553 次浏览

这个错误的原因是视图文件夹引用 System 中的 web.config。韦伯。网页。Razor,Version = 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-aspnet-mvc-5-and-web-api-2的信息

在我的案例中,我已经解决了这个问题,我还更新了活动服务器上的 Web.config,VS 在升级到 MVC 5时已经更新了它

我只是在这个问题上多说两句。

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

看起来这个升级包里没有这个文件夹。

我使用的是 VS2013,MVC 5.2.2.0,Web Api 2。我刚刚改变了所有的版本从 2.0.0.03.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>

问题就解决了。 中了! !

如果你通过路由调试器得到了这个,那么你需要更新路由调试器区域下面的视图文件夹中的 web.config。

尝试了上面所有的方法,直到我在 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>