IHttpContextAccessor注册及使用
- 一般情况下我们需要通过HttpContext 来获取当前用户请求服务器得到认证的信息.
- 在.Net5中如果要使用HttpContext需要先在容器中注册.
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
- 然后使用, 但是为了方便操作, 一般会建一个静态类, 用静态的方式获取该服务.
public static class StaticHttpContextExtensions
{
public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app)
{
var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();
Utilities.HttpContext.Configure(httpContextAccessor);
return app;
}
}
- 使用
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseStaticHttpContext();
}
- 在具体使用使用的时候, 可以通过构造函数, 或者属性等方式获取到实体, 这里以属性举例
private static Microsoft.AspNetCore.Http.HttpContext Context
{
get
{
return Utilities.HttpContext.Current;
}
}
- 总结: 在.Net Core 和最新的.Net5 中 大量使用扩展方法, 这样方便操作, 且扩展性更强.