public static class HttpContext { private static IHttpContextAccessor _accessor; public static Microsoft.AspNetCore.Http.HttpContext Current => _accessor.HttpContext; internal static void Configure(IHttpContextAccessor accessor) { _accessor = accessor; } } public static class StaticHttpContextExtensions { public static void AddCustomHttpContextAccessor(this IServiceCollection services) { services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); } public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app) { var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>(); HttpContext.Configure(httpContextAccessor); return app; } }
注册服务:
public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); services.AddCustomHttpContextAccessor(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseStaticHttpContext(); }