【问题标题】:Upgrading to MVC 5.2.0.0 causes exception "Method not found: 'Boolean System.Web.WebPages.BuildManagerWrapper.IsNonUpdateablePrecompiledApp"升级到 MVC 5.2.0.0 导致异常“找不到方法:'Boolean System.Web.WebPages.BuildManagerWrapper.IsNonUpdateablePrecompiledApp”
【发布时间】:2014-08-13 05:59:03
【问题描述】:

我刚刚升级到 Mvc 5.2.0.0,当我在浏览器 (IE9) 中启动 Web 应用程序时开始出现此异常:

[MissingMethodException:找不到方法:'Boolean System.Web.WebPages.BuildManagerWrapper.IsNonUpdateablePrecompiledApp(System.Web.Hosting.VirtualPathProvider, Microsoft.Internal.Web.Utils.IVirtualPathUtility)'。]

[堆栈跟踪被剪断]

来自this MSDN Forums link 我了解到它很可能是一些旧版本的 System.Web.WebPages.dll 在“临时 ASP.NET 文件”文件夹中徘徊。我清理了临时 ASP.NET 文件夹,但无济于事。我已经清理并重建了解决方案,但没有运气。我还检查了对 DLL 的引用 - 它们都已正确更新。

我的 Web.config(相关部分)如下所示:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" 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="0.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
  </dependentAssembly>
</assemblyBinding>

【问题讨论】:

    标签: asp.net asp.net-mvc nuget asp.net-webpages


    【解决方案1】:

    重新安装 Microsoft ASP.NET Web Pages NuGet 包将解决您的问题:

    Install-Package Microsoft.AspNet.WebPages

    【讨论】:

      【解决方案2】:

      在我的情况下,问题是 GAC 版本和 NuGet 版本之间存在冲突,所以当我删除 c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Web.WebPages 文件夹并重建它时,它开始正常工作,没有这个异常。

      我想前一段时间我用 MVC 4 安装了 System.Web.WebPages,当我尝试使用 MVC 5 时,它仍然使用 GAC 的版本,因为它仍然有 3.0.0 版本,而不是现实中的 3.2。

      【讨论】:

        猜你喜欢
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 2012-11-06
        • 1970-01-01
        • 2015-08-18
        相关资源
        最近更新 更多