.NET CORE 使用存放在資料庫的Session
https://blog.csdn.net/u012601647/article/details/68553611
session既可以放在記憶體中,也可以儲存在資料庫中,.net core提供了儲存在資料庫中的配置
首先,需要通過cmd指令生成session資料庫,生成資料庫欄位為Id,Value,ExpiresAtTime,
SlidingExpirationInSeconds,AbsoluteExpiration
其次,進行session配置:
(1)startup.cs檔案中,找到ConfigureServices(IServiceCollection services)方法注入Session,
//sessionDB
services.AddDistributedSqlServerCache(o =>
{
o.ConnectionString = "server=10.1.1.10;database=aaaaa;uid=sa;
o.SchemaName = "dbo";
o.TableName = "SessionState";
});
//sessionb timeout
services.AddSession(o =>
{
o.IdleTimeout = TimeSpan.FromSeconds(1800);
});
(2)找到Configure方法,注入session
//sessionDB
app.UseSession();
之後我們就可以在controller中使用session了。
HttpContext.Session.SetString("code","123456");
HttpContext.Session.GetString("code");
注意:注入時會提示某些包需要引入,code可以通過工具將nut包下載到工程中。
Microsoft.AspNetCore.Session。
但是core的session僅限於controller,想在其他地方使用,還需要進行IHttpContextAccessor註解。
首先在startup.cs檔案中ConfigureServices(IServiceCollection services)方法進行HttpContextAccessor註解。
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
其次找到Configure方法,新增IServiceProvider svp引數,在方法中新增【MyHttpContext.ServiceProvider = svp;】
進行注入之後在自定義MyHttpContext類
public static class MyHttpContext
{
public static IServiceProvider ServiceProvider;
static MyHttpContext()
{ }
public static HttpContext Current
{
get
{
object factory = ServiceProvider.GetService(typeof(Microsoft.AspNetCore.Http.IHttpContextAccessor));
HttpContext context = ((IHttpContextAccessor)factory).HttpContext;
return context;
}
}
}
注意:新增類如果在FrameWork類庫中,需要引入
Microsoft.AspNetCore.Html.Abstractions.DLL
Microsoft.AspNetCore.Http.DLL
Microsoft.AspNetCore.Http.Abstractions.DLL
使用時MyHttpContext.Current.Session.SetString("code","123456");
MyHttpContext.Current.Session.GetString("code");
注意:在其他類庫中使用時如果報錯,還需要引入
Microsoft.AspNetCore.Http.DLL
Microsoft.AspNetCore.Http.Abstractions.DLL
Microsoft.AspNetCore.Http.Extensions.DLL
Microsoft.AspNetCore.Http.Features.DLL
Microsoft.AspNetCore.HttpOverrides.DLL
友情提示:seivice類的注入: services.AddTransient<ISiteContract, SiteService>();
---------------------
作者:菜鳥小灰灰
來源:CSDN
原文:https://blog.csdn.net/u012601647/article/details/68553611?utm_source=copy
版權宣告:本文為博主原創文章,轉載請附上博文連結!