[一]System.Web.WebPages.Razor.Configuration.HostSection 不能强制转

本文关键字:不能 HostSection Configuration Razor System Web WebPages | 更新日期: 2023-09-27 17:56:04

我收到以下错误:

[A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换 到 [B]System.Web.WebPages.Razor.Configuration.HostSection。A型 源自"System.Web.WebPages.Razor, Version=2.0.0.0, 上下文中的区域性=中性,公钥令牌=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, 上下文中的区域性=中性,公钥令牌=31bf3856ad364e35' 位置"C:''Users''MyName''AppData''Local''Temp''Temporary "处的"默认" ASP.NET Files''root''63e7ff36''a1cb775d''assembly''dl3''8f568c18''9b7ddacf_d04dcf01''System.Web.WebPages.Razor.dll'.

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

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

[一]System.Web.WebPages.Razor.Configuration.HostSection 不能强制转

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

问题解决了。宾果游戏!!

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

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

似乎nuget包升级没有以某种方式考虑此文件夹。

此错误的原因是视图文件夹中的 web.config 引用 System.Web.WebPages.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 中直接在项目文件夹下插入以下行,问题仍未解决。

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

如果使用路由调试器获得此信息,则需要更新路由调试器区域下的"视图"文件夹中的 web.config。

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