ASP.NET Core 8 Web API运行报错:找不到指定授权方法
ASP.NET Core 8 Web API运行时MissingMethodException问题解决
问题描述
创建ASP.NET Core 8 Web API项目后,运行时在app.Run();处抛出以下异常:
System.MissingMethodException : 'Method not found: 'Boolean Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.get_AllowsCachingPolicies()'.'
已手动安装Microsoft.AspNetCore.Authorization包,但问题仍未解决。项目代码如下:
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run();
原因分析
这个异常的核心原因是包版本不兼容:
- ASP.NET Core 8的所有核心组件(包括Authorization)已经整合到
Microsoft.AspNetCore.App元包中,项目默认会自动引用该元包,无需手动安装单独的Microsoft.AspNetCore.Authorization包。 - 手动安装的
Microsoft.AspNetCore.Authorization包版本如果与.NET 8内置版本不一致(比如安装了更低版本),会导致依赖冲突,出现找不到方法的异常——AllowsCachingPolicies是.NET 8中IAuthorizationPolicyProvider新增的属性,低版本包中不存在该成员。
解决方案
移除手动安装的Authorization包
- Visual Studio操作:右键项目 → 管理NuGet程序包 → 找到
Microsoft.AspNetCore.Authorization并卸载。 - CLI命令执行:
dotnet remove package Microsoft.AspNetCore.Authorization。
- Visual Studio操作:右键项目 → 管理NuGet程序包 → 找到
清理并恢复依赖
执行以下命令确保项目依赖完全同步:dotnet clean dotnet restore检查项目文件(.csproj)
打开项目的.csproj文件,确保没有保留对Microsoft.AspNetCore.Authorization的显式引用,保留框架默认的元包引用即可,示例如下:<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> <ItemGroup> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" /> </ItemGroup> </Project>重启开发环境并重新构建
关闭并重新打开开发工具(如Visual Studio),重新构建并运行项目。
内容的提问来源于stack exchange,提问作者Totoblo
相关产品推荐
相关产品推荐

