[A] System.Web.WebPages.Razor.Configuration.HostSection无法转换为…web.config问题


158

我收到以下错误:

无法将[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'在上下文'Default'中位于位置'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'在上下文'Default'中的位置'C:\ Users \ MyName \ AppData \ Local \ Temp \ Temporary ASP.NET文件\ root \ 63e7ff36 \ a1cb775d \ assembly \ dl3 \ 8f568c18 \ 9b7ddacf_d04dcf01 \ System.Web.WebPages.Razor.dll'。

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

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

Answers:


274

我正在使用VS2013,MVC 5.2.2.0,Web Api2。我刚刚将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>

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


7
这为我做了工作。谢谢!
约瑟夫·伍德沃德

1
这为我解决了。我正在将Webforms应用程序转换为MVC5。

1
@guneysus,如果不进行手动编辑,您将如何做相当于Kuntal的答案?
twm 2015年

@twm通常Update-Package也会编辑web.config
guneysus 2015年

这就是为什么我喜欢!
Homunculus Reticulli

102

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

我发现对我来说,此错误的原因是当其他所有东西都在使用时,Views文件夹web.config正在引用 System.Web.WebPages.Razor, Version=2.0.0.03.0.0.0

似乎nuget-package升级没有以某种方式解决此文件夹。


1
更精确!视图文件夹中的web.config。
Rohit Verma

58

导致此错误的原因是Views文件夹中的web.config引用了System.Web.WebPages.Razor,版本为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-和web-api-2


5
听起来不像是一种解决方法,而是可以解决我的问题。一些项目可能仅依赖于mvc4
简而言之,2014年

12
特别是,该错误的解决方案似乎在“更新Views文件夹下的web.config文件”部分中。似乎使用NuGet从MVC4-> MVC5更新不会自动更新Views / Web.config中的版本号。
泰勒

感谢您的链接!如果NuGet更新至少可以显示到该页面的链接,那就
太好了

我遵循了指南,现在我无法以调试模式运行站点-告诉我“ ...无法启动具有类库输出类型的项目...”
Matt

2
为我工作,我的主要问题是因为我没有在Views子文件夹的web.config中更新版本。
连接软件

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>


1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.