Umbraco项目引用控制器项目后出现MissingMethodException问题求助
Umbraco v13.5.2 + .NET 8 跨项目引用后出现MissingMethodException问题
问题背景
- 项目A:基于ASP.NET Core(.NET 8.0)的Umbraco v13.5.2 Web项目,原本运行正常
- 项目B:类库项目,引用同版本
Umbraco.Cms.Core,编译无问题,可被控制台应用正常调用 - 异常现象:项目A添加对项目B的引用后,无法正常启动,浏览器显示空白页面,日志中出现以下错误:
{ "@t":"2025-01-20T19:02:25.1073019Z", "@mt":"Unexpected exception in static IISHttpServer.HandleRequest.", "@l":"Error", "@x":"System.MissingMethodException: Method not found: 'System.Nullable`1<System.Net.Security.TlsCipherSuite> Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.get_NegotiatedCipherSuite()'. at Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer.IISContextFactory`1.CreateHttpContext at Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer.HandleRequest(IntPtr pInProcessHandler, IntPtr pvRequestContext)", "SourceContext":"Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer", "ProcessId":45108, "ProcessName":"iisexpress", "ThreadId":21, "ApplicationId":"***", "MachineName":"***", "Log4NetLevel":"ERROR" }
已尝试的无效解决方案
- 升级
Microsoft.AspNetCore.Connections.Abstractions至9.0.1版本 - 确认两个项目的公共NuGet包版本完全一致
- 因项目要求使用最新LTS版本,无法升级至Umbraco v15或.NET 9
项目文件代码
项目B(Controllers.csproj)
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <OutputType>Library</OutputType> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="Umbraco.Cms.Core" Version="13.5.2" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\Entities\Entities.csproj" /> </ItemGroup> </Project>
项目A(Umbraco Web项目)
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <RootNamespace>My.Umbraco</RootNamespace> </PropertyGroup> <ItemGroup> <PackageReference Include="Umbraco.Cms" Version="13.5.2" /> </ItemGroup> <ItemGroup> <!-- Opt-in to app-local ICU to ensure consistent globalization APIs across different platforms --> <PackageReference Include="Microsoft.ICU.ICU4C.Runtime" Version="72.1.0.3" /> <ProjectReference Include="..\Controllers\Controllers.csproj" /> <RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="72.1.0.3" Condition="$(RuntimeIdentifier.StartsWith('linux')) or $(RuntimeIdentifier.StartsWith('win')) or ('$(RuntimeIdentifier)' == '' and !$([MSBuild]::IsOSPlatform('osx')))" /> </ItemGroup> <PropertyGroup> <!-- Razor files are needed for the backoffice to work correctly --> <CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory> </PropertyGroup> <PropertyGroup> <!-- Remove RazorCompileOnBuild and RazorCompileOnPublish when not using ModelsMode InMemoryAuto --> <RazorCompileOnBuild>false</RazorCompileOnBuild> <RazorCompileOnPublish>false</RazorCompileOnPublish> </PropertyGroup> </Project>
内容的提问来源于stack exchange,提问作者B_D
相关产品推荐
相关产品推荐

