using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
namespace Sheepsoft.Core.Context
{
/// <summary>
/// 上下文 HttpContext 类
/// </summary>
public static class HttpContextSheep
{
#region 帮助
private static IHttpContextAccessor _contextAccessor;
public static Microsoft.AspNetCore.Http.HttpContext Current => _contextAccessor.HttpContext;
public static void Configure(IHttpContextAccessor contextAccessor)
{
_contextAccessor = contextAccessor;
}
#endregion
#region 注册服务
public static void AddHttpContextAccessor(this IServiceCollection services)
{
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app)
{
var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();
Configure(httpContextAccessor);
return app;
}
#endregion
}
}
/**
使用方法
在 Startup 下
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseStaticHttpContext();
}
**/
本文介绍了一种在ASP.NET Core应用程序中管理HttpContext的方法。通过创建一个静态类HttpContextSheep,实现了HttpContext的全局访问和配置。该方法首先注册IHttpContextAccessor服务,然后在应用程序启动时配置HttpContextSheep类,确保在所有请求中都能访问到当前的HttpContext。
319

被折叠的 条评论
为什么被折叠?



