使用现有的 .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
我参加聚会有点晚了,但是,我在 .NET6 项目中将开发 Web 服务器从
IISExpress
更改为 IIS
后就遇到了这个问题。
为了修复它,我只需安装 System.Security.Cryptography.Pkcs NuGet Package。
这使我能够保持启用Razor运行时编译功能,我不想失去它。
我希望这可以帮助其他遇到同样问题的人。有关此主题的更多信息,请阅读我博客上的这篇文章。
仅当在 docker 容器内运行应用程序(piranha cms)时,我才会收到此错误。 我必须删除 razor 运行时编译才能使其工作。
// comment out or delete this line
// options.AddRazorRuntimeCompilation = true;