【问题标题】:Razor 2 to Razor 3 MVC 5Razor 2 到 Razor 3 MVC 5
【发布时间】:2013-11-25 19:29:15
【问题描述】:

我一直在研究 MVC 4 解决方案,并且一直在尝试将其升级到 MVC 5。我已按照here 概述的步骤进行操作。

我已经关注了它,现在每当我运行 MVC 应用程序时,它都会给我这个错误消息:

[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to 
[B]System.Web.WebPages.Razor.Configuration.HostSection. 

Type A originates from 
'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 
'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. 
Type B originates from 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 
'C:\Users\User\AppData\Local\Temp\Temporary ASP.NET 
Files\root\665ac028\de53a189\assembly\dl3\c2c0a4b5\56e8099e_40e0ce01\System.Web.WebPages.Razor.dll'.

有谁知道这是怎么产生的?或者如何解决?到目前为止我已经环顾四周了?我已经尝试更改 web.config 文件,但无济于事......

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-4 razor asp.net-mvc-5


【解决方案1】:

看起来您仍然有对 Razor 2.0 dll 的引用。

检查您的项目引用的属性 - 特别是“使用特定版本”。

【讨论】:

    【解决方案2】:

    在您的 Web.config(-s) 中,确保 assemblyBinding 包含程序集 System.Web.WebPages.RazorSystem.Web.Mvc 的正确版本。

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <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>
    
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
    

    并确保 ConfigSections 中的剃须刀 sectionGroup 也参考最新版本:

    <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有0-5,新版本5,razor有1-3新版本3
    • 你是对的。虽然我确实重新启动了应用程序(我不是很远,所以我只是做了一个 MVC 5 项目并移植了它),我注意到问题在于事后的第二个 Web 配置(视图内部的那个)
    • 没错,因为您可能在项目的任何部分都有配置,因此必须查看/更正所有配置
    • 默认 MVC 网站模板有 2 个配置:一个在网站根目录,另一个在 Views。 Mvc 团队使用模板在版本之间进行更改,因此最好使用文件搜索来确保您没有错过任何内容。
    • @Dima 我将我的项目从 Framework 4.0 更改为 4.5.1 并安装了 MVC 5.2.3 并遇到了同样的问题。我按照您的回答,发现主 web.config 中仅缺少以下内容,
    【解决方案3】:

    在 web.config 中检查版本。如果它再次给出错误,请尝试清理解决方案并重建它。还要检查项目的 Bin 文件夹,从 bin 文件夹中删除旧引用并重建项目解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 2011-07-07
      • 2011-04-19
      • 2011-06-11
      相关资源
      最近更新 更多