63

我刚刚升级了 MVC 3 项目 (ASP.net 4) 中的包,现在在访问该项目中的页面时收到以下错误消息:

“/MyApplication”应用程序中的服务器错误。

无法加载文件或程序集“System.Web.WebPages.Razor,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040) 说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.IO.FileLoadException:无法加载文件或程序集“System.Web.WebPages.Razor,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

程序集加载跟踪:以下信息有助于确定为什么无法加载程序集“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”。

=== 预绑定状态信息 === LOG: User = IIS APPPOOL\ASP.NET v4.0 LOG: DisplayName = System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (完全指定)日志:Appbase = file:///C:/.../ 日志:初始 PrivatePath = C:...\bin 调用程序集:Microsoft.Web.Helpers,版本=2.0.0.0,文化=中性, PublicKeyToken=31bf3856ad364e35。=== LOG:此绑定在默认加载上下文中开始。LOG:使用应用程序配置文件:C:...\web.config LOG:使用主机配置文件:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config LOG:使用来自 C 的机器配置文件: \Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config。日志:政策后参考:System.Web.WebPages.Razor,版本=2.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35 日志:正在尝试下载新的 URL 文件:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/.../cb62a7b2/327a0353/System.Web.WebPages.Razor.DLL。日志:尝试下载新 URL 文件:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/.../cb62a7b2/327a0353/System.Web.WebPages.Razor/System .Web.WebPages.Razor.DLL。日志:正在尝试下载新的 URL 文件:///C:/LeGroupeHtmSVN/.../UpDir.Web/bin/System.Web.WebPages.Razor.DLL。警告:比较程序集名称导致不匹配:主要版本错误:无法完成程序集设置(hr = 0x80131040)。探测终止。///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/.../cb62a7b2/327a0353/System.Web.WebPages.Razor/System.Web.WebPages.Razor.DLL。日志:正在尝试下载新的 URL 文件:///C:/LeGroupeHtmSVN/.../UpDir.Web/bin/System.Web.WebPages.Razor.DLL。警告:比较程序集名称导致不匹配:主要版本错误:无法完成程序集设置(hr = 0x80131040)。探测终止。///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/.../cb62a7b2/327a0353/System.Web.WebPages.Razor/System.Web.WebPages.Razor.DLL。日志:正在尝试下载新的 URL 文件:///C:/LeGroupeHtmSVN/.../UpDir.Web/bin/System.Web.WebPages.Razor.DLL。警告:比较程序集名称导致不匹配:主要版本错误:无法完成程序集设置(hr = 0x80131040)。探测终止。

堆栈跟踪:

[FileLoadException:无法加载文件或程序集“System.Web.WebPages.Razor,版本=2.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)]
Microsoft.Web.Helpers.PreApplicationStartCode.Start() +0

[InvalidOperationException:Microsoft.Web.Helpers.PreApplicationStartCode 类型的预应用程序启动初始化方法 Start 引发异常,并显示以下错误消息:无法加载文件或程序集 'System.Web.WebPages.Razor,版本 = 2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)。]
System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 方法)+11711966
System.Web.Compilation.BuildManager.CallPreStartInitMethods() +465
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager,IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironmentParameters hostingParameters,PolicyLevel policyLevel,异常 appDomainCreationException)+1167

[HttpException (0x80004005): 类型 Microsoft.Web.Helpers.PreApplicationStartCode 上的预应用程序启动初始化方法 Start 引发异常并显示以下错误消息:无法加载文件或程序集 'System.Web.WebPages.Razor,版本 = 2.0 .0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+11700896 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+ 4869125

-------------------------------------------------- ------------------ 版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.272

在我的 web.config 文件和我的应用程序中,我引用 System.Web.WebPages.Razor v1.0.0.0:

  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
  </dependentAssembly>

我什至不知道我是否可以将 System.Web.WebPages.Razor v2.0.0.0 与 .Net 4 一起使用。

现在,我如何找出引用 System.Web.WebPages.Razor v2.0.0.0 的内容?

4

18 回答 18

64

很简单。在 Nuget 包管理器控制台中:

更新包 Microsoft.AspNet.Mvc -重新安装

于 2015-06-10T11:06:04.233 回答
51

当我执行“删除未使用的引用”时,这个问题就开始了。该网站仍然可以在我的本地计算机上运行,​​但发布后无法在服务器上运行。

删除未使用的引用

我通过执行以下操作解决了这个问题,

  1. 在 Visual Studio 中打开“包管理器控制台”
  2. 卸载包 Microsoft.AspNet.Mvc
  3. 安装包 Microsoft.AspNet.Mvc
于 2012-12-18T01:20:56.373 回答
29

如何找出引用 System.Web.WebPages.Razor v2.0.0.0 的内容?

只需阅读您的异常堆栈跟踪:

Calling assembly : Microsoft.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

因此,您似乎正在使用Microsoft.Web.Helperswhich 反过来取决于System.Web.WebPages.Razor, Version=2.0.0.0.

于 2012-06-12T16:12:01.217 回答
8

在经历了很多痛苦、谷歌搜索和头发拉扯之后,我最终使用 nuget 卸载了 MVC 4,从 Web 配置中删除了对 MVC、剃刀和基础设施的所有引用,从 bin 文件夹中删除了 dll - 然后使用 nuget 重新安装所有内容。尝试找出 dll 不匹配的原因所需的时间更少。

于 2013-10-15T21:09:07.383 回答
7

在 ASP.NET MVC 4 中,命名空间不是 System.Web.WebPages.Razor,而是 System.Web.Razor

这对我有用,更改您的 web.config。

于 2013-03-16T16:31:22.593 回答
3

我使用 Windows 控制面板卸载了 ASP.NET MVC 4,然后通过运行重新安装它AspNetMVC4Setup.exe(我从https://www.microsoft.com/en-us/download/details.aspx?id=30683获得),然后为我解决了这个问题。

换句话说,我不需要使用 Nuget 或 Visual Studio。

于 2017-03-07T22:30:28.323 回答
2

在添加了对System.Web.Mvc. 我删除了所有我能找到的参考资料,但似乎没有任何效果。我终于删除了项目的bin文件夹,重建后错误消失了。

于 2017-03-23T18:21:39.433 回答
1

我也收到了这个错误,并尝试了我可以在网上找到的所有东西,但它不会消失。最后,我只是将 MVC 从 5.2.3 降级到 4.0.40804。我不喜欢这个解决方案,因为最终我需要使用 MVC 5,但它现在可以工作。希望这对其他人有帮助。

于 2017-05-26T15:52:40.483 回答
1

简短:
如果您在纯 Web API 项目中遇到此问题(因此不需要剃刀),请尝试添加它,重建,然后删除它。

长话短说:
我在一个全新的纯 Web API 项目中遇到了这个问题,除了堆栈跟踪将“System.Web.Mvc”指向调用程序集(参见达林的回答)。虽然在我的项目中没有引用 MVC、Razor 或类似的东西......
我决定添加 MVC 包(AspNet.Mvc、AspNet.WebPages 和 AspNet.Razor)来检查是否有任何后续问题。
WebApi 应用程序随后完美启动。然后我删除了完全相同的包,一切都还可以。

希望它可以帮助某人。

于 2017-08-11T14:35:26.237 回答
1

当我将 MVC4 升级到 MVC5 版本时,我遇到了同样的错误,首先我升级了依赖于的调用程序集

> System.Web.WebPages.Razor, Version=2.0.0.0

之后更新了 Views 文件夹下的 web.config 文件,更新了以下包

<configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
</configSections>

<configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.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>
 </configSections>

并且也更新了

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

这些步骤对我有用

于 2019-05-25T08:07:43.450 回答
1

在我的电脑完全重新安装后,我收到了此处描述的错误。VS 2017 已重新安装,但未重新安装“ASP.NET Web Pages 2”。重新安装“ASP.NET Web Pages 2”后,问题解决了。

另请参阅:无法加载文件或程序集 System.Web.WebPages.Razor, , Version=3.0.0.0 或其依赖项之一

于 2020-01-14T11:21:02.443 回答
0

在某些情况下,只需安装网页 2 即可解决此问题(我的案例已解决 - 使用 web api 部署到本地网页)

https://www.microsoft.com/en-us/download/details.aspx?id=34600

于 2017-07-24T02:13:47.913 回答
0

如果早期的工作项目突然因提到的错误而崩溃,您可以尝试以下解决方案。

  • 删除相应 web/service 项目的 bin 文件夹。
  • 建造

这对我有用。

于 2017-10-25T12:41:21.040 回答
0

对于类似的程序集绑定错误,以下步骤可能会有所帮助:

  1. 右键单击您的解决方案,然后单击管理解决方案的 Nuget 包...
  2. 转到合并选项卡(最后一个选项卡)并检查安装在解决方案内不同项目中的包之间是否有任何差异。特别注意您引用的项目,这些项目可能具有较低的版本,因为它们通常不太引起注意)
  3. 合并与您的装配错误相关的特殊包,并注意许多包依赖于其他一些包,如 *.code & *.api & ...
  4. 解决所有可疑的合并后,重建并重新运行应用程序并查看程序集绑定是否已解决。
于 2019-03-16T08:28:23.737 回答
0

我首先尝试了 Mohammed Emad 的回答——不高兴。然后我尝试了

git clean -x -d -f

这给我带来了一个新的“Roslyn”错误,我可以通过手动编辑我的 .csproj来修复它。

有趣的是,在我进一步阅读了关于 Roslyn 问题的页面后,我发现了另一个投票数更高的建议(Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r)。考虑到我宁愿实现它而不是手动编辑 .csproj,我取消了我的 .csproj 更改,只是发现我的解决方案仍然有效。

所以毕竟,我想知道穆罕默德的回答(在这个页面上)是否会成功,如果我只是先完成了 git clean 。

于 2019-05-02T03:32:23.997 回答
0

通过安装 AspNetMVC4Setup.exe(这里是链接:https ://www.microsoft.com/en-us/download/details.aspx?id=30683 )解决了这个问题。

通过重新启动/重新安装 Microsoft.AspNet.Mvc 包对我没有帮助。

于 2020-02-06T23:51:08.303 回答
0

我通过 NuGet 降级到 MVC 4,然后再次升级到 5.2.7,它解决了这个问题

于 2020-08-30T08:39:15.757 回答
0

解决您的问题

删除项目参考中的 WebMatrix.Data 和 WebMatrix.WebData

于 2022-02-10T09:53:15.490 回答