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

Cry*_*ptc 4 c# asp.net-mvc .net-6.0

使用现有的 .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<TSource, TResult>.MoveNext()

...

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

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

Cry*_*ptc 6

我需要删除至少 1 个Nuget 包

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

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

Microsoft.AspNetCore.Mvc>Razor.RuntimeCompilation