.Net5 之 IHttpContextAccessor注册

IHttpContextAccessor注册及使用

  1. 一般情况下我们需要通过HttpContext 来获取当前用户请求服务器得到认证的信息.
  2. 在.Net5中如果要使用HttpContext需要先在容器中注册.
public void ConfigureServices(IServiceCollection services)
{
      services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
  1. 然后使用, 但是为了方便操作, 一般会建一个静态类, 用静态的方式获取该服务.
public static class StaticHttpContextExtensions
{
 public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app)
        {
            var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();
           Utilities.HttpContext.Configure(httpContextAccessor);
            return app;
        }
}

  1. 使用
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
      app.UseStaticHttpContext();
}

  1. 在具体使用使用的时候, 可以通过构造函数, 或者属性等方式获取到实体, 这里以属性举例
 private static Microsoft.AspNetCore.Http.HttpContext Context
        {
            get
            {
                return Utilities.HttpContext.Current;
            }
        }
  1. 总结: 在.Net Core 和最新的.Net5 中 大量使用扩展方法, 这样方便操作, 且扩展性更强.
原文地址:https://www.cnblogs.com/baron-li/p/14287471.html