我收到以下错误:
[A] System.Web.WebPages.Razor.Configuration.HostSection无法投射 到[B] System.Web.WebPages.Razor.Configuration.HostSection。 A型 源自System.Web.WebPages.Razor,版本= 2.0.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'在上下文中 '默认'在位置 ' C:\ Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll&#39 ;. 类型B源自' System.Web.WebPages.Razor,Version = 3.0.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'在上下文中 '默认'在位置' C:\ Users \ MyName \ AppData \ Local \ Temp \ Temporary ASP.NET 文件\根\ 63e7ff36 \ a1cb775d \组件\ DL3 \ 8f568c18 \ 9b7ddacf_d04dcf01 \ System.Web.WebPages.Razor.dll'
我已经在stackoverflow中搜索了类似的问题,并且我使用了他们的解决方案,但它似乎无法解决我遇到的问题。
它突然发生了,我只是按下清洁解决方案,这个错误突然出现了。我也开始在解决方案上使用nuget包恢复。我也更新了我的软件包(使用Update-package),因此其中一个可能与此问题有关。
答案 0 :(得分:269)
我正在使用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>
问题得到解决。 BINGO !!
答案 1 :(得分:100)
在这个问题上加上我的两分钱。
我发现导致此错误的原因是视图文件夹 web.config在其他所有内容使用System.Web.WebPages.Razor, Version=2.0.0.0
时引用3.0.0.0
似乎nuget-package升级没有以某种方式解释这个文件夹。
答案 2 :(得分:52)
此错误的原因是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
答案 3 :(得分:10)
尝试了上面的所有方法,直到我在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>
答案 4 :(得分:3)
如果使用Route Debugger得到这个,那么你需要更新Route Debugger区域下Views文件夹中的web.config。
答案 5 :(得分:1)
在我的情况下,我通过更新VS在升级到MVC 5时已更新的实时服务器上的 Web.config 解决了这个问题