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 中 大量使用擴展方法, 這樣方便操作, 且擴展性更強.