升级到 .NET 6 时,Web 项目抛出运行时异常
When upgrading to .NET 6, Web Project throws runtime exception
使用现有的 .NET 5 MVC Web 应用程序,我尝试升级到 .NET 6,但遇到了这个错误。我还使用 IIS 进行 Windows 身份验证——现在在 .NET 6 中设置为属性 -> 调试 -> 超链接下的“配置文件”(打开调试启动配置文件 UI)。我还包含了较新的“Microsoft.AspNetCore.Authentication.Negotiate”Nuget 包(和相关代码)来处理较新的 Windows 身份验证库。
网络应用程序启动时,出现以下错误:
An unhandled exception occurred while processing the request.
InvalidOperationException: Cannot find compilation library location for package 'System.Security.Cryptography.Pkcs'
Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths(ICompilationAssemblyResolver resolver, List assemblies)
Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths()
Microsoft.AspNetCore.Mvc.ApplicationParts.AssemblyPartExtensions+<>c.b__0_0(CompilationLibrary library)
System.Linq.Enumerable+SelectManySingleSelectorIterator<TSource, TResult>.MoveNext()
...
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
如果我添加列出的包,这不会消失:System.Security.Cryptography.Pkcs
我需要删除 至少 1 个 Nuget 包:
- Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation -- 我删除了这一秒,但在我删除后它开始工作了。
- Microsoft.Extensions.Hosting -- 我先删除了这个,但这并没有解决它。我不知道是否需要删除这个“也”。我假设不是,但我包括在内,以防万一。删除它没有任何伤害。
编辑:作为警告,这将失去Razor.RuntimeCompilation赋予的能力。但是,我相信,.NET 6 中的 IIS 和 Razor 似乎存在代码不兼容问题。
仅当 运行 应用程序 (piranha cms) 在 docker 容器中时,我才会收到此错误。
我必须删除 Razor 运行时编译才能使其正常工作。
// comment out or delete this line
// options.AddRazorRuntimeCompilation = true;
使用现有的 .NET 5 MVC Web 应用程序,我尝试升级到 .NET 6,但遇到了这个错误。我还使用 IIS 进行 Windows 身份验证——现在在 .NET 6 中设置为属性 -> 调试 -> 超链接下的“配置文件”(打开调试启动配置文件 UI)。我还包含了较新的“Microsoft.AspNetCore.Authentication.Negotiate”Nuget 包(和相关代码)来处理较新的 Windows 身份验证库。
网络应用程序启动时,出现以下错误:
An unhandled exception occurred while processing the request.
InvalidOperationException: Cannot find compilation library location for package 'System.Security.Cryptography.Pkcs'
Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths(ICompilationAssemblyResolver resolver, List assemblies) Microsoft.Extensions.DependencyModel.CompilationLibrary.ResolveReferencePaths() Microsoft.AspNetCore.Mvc.ApplicationParts.AssemblyPartExtensions+<>c.b__0_0(CompilationLibrary library) System.Linq.Enumerable+SelectManySingleSelectorIterator<TSource, TResult>.MoveNext()
...
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
如果我添加列出的包,这不会消失:System.Security.Cryptography.Pkcs
我需要删除 至少 1 个 Nuget 包:
- Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation -- 我删除了这一秒,但在我删除后它开始工作了。
- Microsoft.Extensions.Hosting -- 我先删除了这个,但这并没有解决它。我不知道是否需要删除这个“也”。我假设不是,但我包括在内,以防万一。删除它没有任何伤害。
编辑:作为警告,这将失去Razor.RuntimeCompilation赋予的能力。但是,我相信,.NET 6 中的 IIS 和 Razor 似乎存在代码不兼容问题。
仅当 运行 应用程序 (piranha cms) 在 docker 容器中时,我才会收到此错误。 我必须删除 Razor 运行时编译才能使其正常工作。
// comment out or delete this line
// options.AddRazorRuntimeCompilation = true;