原文地址:https://www.cnblogs.com/for-easy-fast/p/12157664.html
Net Core 中WebAPI有關 Session的設置,及獲取
步驟一: 在Startup 文件中做相應的設置
ConfigureServices方法里添加
//ConfigureServices添加:
services.AddSession(options =>
{
options.Cookie.Name = ".AdventureWorks.Session";
options.IdleTimeout = System.TimeSpan.FromSeconds(120);//設置session的過期時間
options.Cookie.HttpOnly = true;//設置在瀏覽器不能通過js獲得該cookie的值
});
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddHttpContextAccessor();
#region 跨域
services.AddCors(options =>
options.AddPolicy("AllowSameDomain",
builder => builder.WithOrigins().AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));
#endregion
//HttpContextAccessor 默認實現了它簡化了訪問HttpContext
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
Configure方法里面添加
app.UseSession();//UseSession配置在UseMvc之前
二 在具體的Control配置相應數據
- 配置 並獲取httpcontext
示例:
public class HomeController : Controller
{
private IHttpContextAccessor _accessor;
public HomeController(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
public IActionResult Index()
{
var httpcontext = _accessor.HttpContext;
return View();
}
}
-
寫SessionHelper類
public class SessionHelper
{
private IHttpContextAccessor _accessor;private ISession _session ; private IRequestCookieCollection _requestCookie ; private IResponseCookies _responseCookie; public SessionHelper(HttpContext context) { _session = context.Session; _requestCookie = context.Request.Cookies; _responseCookie = context.Response.Cookies; } /// <summary> /// 設置session值 /// </summary> /// <param name="session"></param> /// <param name="key">鍵</param> /// <param name="value">值</param> public void SetSession(string key, string value) { var bytes = System.Text.Encoding.UTF8.GetBytes(value); _session.Set(key, bytes); } /// <summary> /// 獲取Session值 /// </summary> /// <param name="key"></param> /// <returns></returns> public string GetSession(string key) { Byte[] bytes; _session.TryGetValue(key, out bytes); var value = System.Text.Encoding.UTF8.GetString(bytes); if (string.IsNullOrEmpty(value)) { value = string.Empty; } return value; } ///// <summary> ///// 設置本地cookie ///// </summary> ///// <param name="key">鍵</param> ///// <param name="value">值</param> ///// <param name="minutes">過期時間</param> //public void SetCookies(string key,string value,int day = 1) //{ // _responseCookie.Append(key, value, new CookieOptions // { // Expires = DateTime.Now.AddDays(day) // }) ; //} //public void DeleteCookies(string key) //{ // _responseCookie.Delete(key); //} //public string GetCookiesValue(string key) //{ // _requestCookie.TryGetValue(key, out string value); // if (string.IsNullOrEmpty(value)) // { // value = string.Empty; // } // return value; //}
}
-
方法里調用sessionHelper
var httpContext = _accessor.HttpContext; SessionHelper session = new SessionHelper(httpContext); string key = "王明"; string value = "2020年 大運年"; //設置session值 session.SetSession(key, value); //獲取session值 session.GetSession(key);