StaticHttpContextExtensions.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. using Microsoft.AspNetCore.Builder;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.Extensions.DependencyInjection;
  4. namespace Masuit.Tools.Core.Net
  5. {
  6. /// <summary>
  7. /// 实现类似于.NET Framework的HttpContext静态对象的中间件对象
  8. /// </summary>
  9. public static class StaticHttpContextExtensions
  10. {
  11. /// <summary>
  12. /// 注入HttpContext静态对象,方便在任意地方获取HttpContext,services.AddHttpContextAccessor();
  13. /// </summary>
  14. /// <param name="services"></param>
  15. public static void AddStaticHttpContext(this IServiceCollection services)
  16. {
  17. services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
  18. }
  19. /// <summary>
  20. /// 注入HttpContext静态对象,方便在任意地方获取HttpContext,app.UseStaticHttpContext();
  21. /// </summary>
  22. /// <param name="app"></param>
  23. /// <returns></returns>
  24. public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app)
  25. {
  26. var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();
  27. HttpContext2.Configure(httpContextAccessor);
  28. return app;
  29. }
  30. }
  31. }