You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:05:33