关于迁移已弃用的Microsoft.AspNetCore.Http.Abstractions NuGet包的疑问
.NET 7 Blazor 类库中 HttpContext 引用的正确姿势
为什么看不到 Microsoft.AspNetCore.Http.Abstractions 7.0.0.0 包?
从.NET Core 3.0开始,Microsoft.AspNetCore.Http.Abstractions这类ASP.NET Core基础组件不再以独立NuGet包形式发布,而是整合进了ASP.NET Core共享框架。所以Visual Studio能识别HttpContext的类型定义,但NuGet管理器里搜不到对应版本的包,这是正常行为。
类库的正确引用方式
根据你的类库类型,选择对应的方案:
- 如果是ASP.NET Core类库(项目SDK为
Microsoft.NET.Sdk.Web):这类项目默认会引用ASP.NET Core共享框架,直接就能使用HttpContext,无需手动添加任何NuGet包,之前的弃用警告会自动消失。 - 如果是普通.NET类库(项目SDK为
Microsoft.NET.Sdk):在项目文件(.csproj)中添加框架引用,替代原来的旧NuGet包:
<ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup>
添加后,类库就能正常访问HttpContext,且不会出现弃用警告。
更解耦的替代方案
如果希望辅助类库不直接依赖ASP.NET Core框架,推荐:
- 避免直接传递
HttpContext,而是提取需要的具体数据(如用户标识、请求头值)作为参数传入辅助方法,减少类库与ASP.NET Core的耦合度。 - 定义抽象接口封装所需的Http上下文能力,类库依赖该接口,由Blazor项目实现接口并注入实例,实现依赖倒置。
内容的提问来源于stack exchange,提问作者Ola Berntsson
相关产品推荐
相关产品推荐

