升级到.NET 6时,Web项目抛出运行时异常

问题描述 投票:0回答:4

使用现有的 .NET 5 MVC Web 应用程序,我尝试升级到 .NET 6,但遇到了此错误。 我还使用 IIS 进行 Windows 身份验证 - 现在在 .NET 6 中设置为属性 -> 调试 -> 超链接(打开调试启动配置文件 UI)下的“配置文件”。 我还包含了较新的“Microsoft.AspNetCore.Authentication.Negotiate”Nuget 包(和相关代码)来处理较新的 Windows 身份验证库。

当网络应用程序启动时,我收到以下错误:

处理请求时发生未处理的异常。

InvalidOperationException:找不到包“System.Security.Cryptography.Pkcs”的编译库位置

Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths(ICompilationAssemblyResolver 解析器,列表程序集) Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths() Microsoft.AspNetCore.Mvc.ApplicationParts.AssemblyPartExtensions+<>c.b__0_0(CompilationLibrary 库) System.Linq.Enumerable+SelectManySingleSelectorIterator.MoveNext()

...

Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext 上下文)

如果我添加列出的包,这不会消失:System.Security.Cryptography.Pkcs

c# asp.net-mvc .net-6.0
4个回答
7
投票

我需要删除至少1个Nuget包

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation - 我删除了这一秒,但在我删除后它开始工作。
  2. Microsoft.Extensions.Hosting——我首先删除了这个,但仅此一项并没有解决它。 不知道这个“也”是否需要去掉。 我想不会,但我还是把它包括在内,以防万一。 删除它并没有造成任何伤害。

编辑:作为警告,这将失去 Razor.RuntimeCompilation 提供的功能。 但是,我相信 .NET 6 中的 IIS 和 Razor 似乎存在代码不兼容的情况。

Microsoft.AspNetCore.Mvc>Razor.RuntimeCompilation


2
投票

我参加聚会有点晚了,但是,我在 .NET6 项目中将开发 Web 服务器从

IISExpress
更改为
IIS
后就遇到了这个问题。

为了修复它,我只需安装 System.Security.Cryptography.Pkcs NuGet Package。

这使我能够保持启用Razor运行时编译功能,我不想失去它。

我希望这可以帮助其他遇到同样问题的人。有关此主题的更多信息,请阅读我博客上的这篇文章


0
投票

仅当在 docker 容器内运行应用程序(piranha cms)时,我才会收到此错误。 我必须删除 razor 运行时编译才能使其工作。

// comment out or delete this line
// options.AddRazorRuntimeCompilation = true;

0
投票

我将 Web 应用程序从 .NET 6 升级到 .NET 8,并遇到了同样的问题 - 完全相同的错误消息。

我将与 Microsoft.AspNetCore(组件、razor 运行时等)相关的 Nuget 包更新到最新版本 8(此时为 8.0.11),并且根据 @Darkseal 的建议,我还添加了 System.Security.Cryptography.Pkcs版本8.0.1.

这解决了问题。

Nuget Package Manager Screenshot

© www.soinside.com 2019 - 2024. All rights reserved.