.Net Core WebApi 3.1 处理父类控制器HttpContext为null

官网关于HttpContext使用说明
参考:通过自定义组件使用 HttpContext
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/http-context?view=aspnetcore-2.2

在控制器中直接使用HttpContext为null

  • 控制器直接可以访问HttpContext
image.png
  • 父类访问HttpContext为null
HttpContext为null

解决父类访问不到HttpContext

  1. 新建类(HelperHttpContext.cs),编辑内容如下(需要添加引用)
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;

namespace L.UtilityTool.Helper
{
    public static class HelperHttpContext
    {
        public static IServiceCollection serviceCollection;

        public static HttpContext Current
        {
            get
            {
                object factory = serviceCollection.BuildServiceProvider().GetService(typeof(IHttpContextAccessor));
                HttpContext context = ((IHttpContextAccessor)factory).HttpContext;
                return context;
            }
        }
    }
}
  1. 在StartUp.cs中增加如下代码
// 增加Http组件
services.AddSingleton();
HelperHttpContext.serviceCollection = services; 
代码添加位置展示
  1. 验证父类HttpContext
  • 使用方式 HelperHttpContext.Current
image.png

你可能感兴趣的:(.Net Core WebApi 3.1 处理父类控制器HttpContext为null)