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

.NET 8升级后Microsoft.AspNetCore.Identity兼容问题求助

可行重构解耦方案

核心思路

将ASP.NET Core Identity相关逻辑与通用业务逻辑完全分离,避免客户端项目(Blazor WASM、.NET MAUI)直接依赖服务器端的ASP.NET Core框架组件,从根源解决NETSDK1082错误。


具体实施步骤

1. 拆分类库结构

  • 保留/升级通用类库:将原两个.NET Standard 2.1类库中的身份验证无关代码(通用模型、业务逻辑、工具类)保留,建议升级为.NET 8类库(兼容所有.NET 8项目),确保该类库不引用任何ASP.NET Core相关包或框架。
  • 新建Identity专用类库:创建一个ASP.NET Core类库(.NET 8),专门存放Identity相关代码:
    • 自定义User、Role实体
    • Identity配置、权限验证逻辑
    • 依赖Microsoft.AspNetCore.Identity.EntityFrameworkCore包(替代已废弃的Microsoft.AspNetCore.Identity,更轻量化),而非整个Microsoft.AspNetCore.App框架。

2. 调整项目引用关系

  • ASP.NET Core Web API:同时引用通用类库和Identity专用类库,负责后端身份验证、授权逻辑,对外暴露登录、注册、权限校验等API接口。
  • Blazor WebAssembly App:仅引用通用类库,通过HTTP调用Web API的身份验证接口实现登录、令牌管理,客户端侧使用Microsoft.AspNetCore.Components.WebAssembly.Authentication包处理UI层的身份验证逻辑(如OIDC、JWT令牌存储),完全不接触服务器端Identity组件。
  • .NET MAUI App:仅引用通用类库,通过HTTP调用Web API的身份验证接口,使用Microsoft.Maui.Authentication包处理客户端登录流程、安全存储令牌,无需依赖ASP.NET Core Identity框架。

3. 替换过时依赖

移除所有项目中已废弃的Microsoft.AspNetCore.Identity包,在Identity专用类库中按需引用以下包:

  • Microsoft.AspNetCore.Identity.EntityFrameworkCore:基于EF Core的Identity实现
  • Microsoft.EntityFrameworkCore.SqlServer/其他数据库驱动:根据数据存储选择

4. 客户端身份验证适配

  • Blazor WASM:配置OIDC或JWT验证流程,通过API获取令牌后,自动在请求头中携带令牌访问受保护接口。
  • .NET MAUI:集成自定义登录流程或第三方身份验证服务(如Azure AD、Auth0),将令牌存储在MAUI安全存储中,发起API请求时附加令牌。

验证与优化

  • 拆分完成后,通用类库无服务器端框架依赖,Blazor WASM和MAUI项目编译时不会再触发NETSDK1082错误。
  • 将通用类库升级为.NET 8类库,可利用.NET 8新特性,同时保持对所有项目的兼容性。
  • 在通用类库中定义统一的身份验证DTO(如LoginRequest、UserInfoDto),实现前后端模型共享。

内容的提问来源于stack exchange,提问作者Rodrigo Santos Barbosa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:17:21