.NET 7中SignInManager<>未找到且拒绝使用过时包的问题
解决.NET 7中
SignInManager<>找不到的问题 问题场景
使用.NET 7开发,所有包与运行时均已更新至最新版本,不想使用Microsoft.AspNet.Identity.Owin这类旧版ASP.NET的身份认证包。当前代码中尝试注入SignInManager<ApplicationUser>时出现编译错误:
The type or namespace name 'SignInManager<>' could not be found (are you missing a using directive or an assembly reference?)
相关代码片段:
using Microsoft.AspNetCore.Identity; namespace Hamrin.Infrastructure.Identity; public class IdentityService : IIdentityService { private readonly RoleManager<IdentityRole<Guid>> _roleManager; private readonly UserManager<ApplicationUser> _userManager; private readonly SignInManager<ApplicationUser> _signInManager; // 错误行 }
项目csproj配置:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\Hamrin.Application\Hamrin.Application.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.4" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.4" /> </ItemGroup> </Project>
解决方案
SignInManager<>类并不包含在Microsoft.AspNetCore.Identity.EntityFrameworkCore包中,它的定义位于**Microsoft.AspNetCore.Identity**包内——这个包是.NET 7官方身份认证体系的核心包,并非过时包(你混淆的Microsoft.AspNet.Identity.Owin是旧版ASP.NET Framework的组件,和这个完全不同)。
只需在csproj中添加对应版本的包引用即可:
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="7.0.4" />
添加后重新还原包并编译,错误即可解决。
补充说明
Microsoft.AspNetCore.Identity:提供身份认证的核心类型(如SignInManager、UserManager的基础定义)Microsoft.AspNetCore.Identity.EntityFrameworkCore:提供基于EF Core的身份数据存储实现,依赖于前者
内容的提问来源于stack exchange,提问作者Aref Azizian
相关产品推荐
相关产品推荐

