.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
相关产品推荐
相关产品推荐

