12 .net core 会话和应用状态

状态管理

可以使用几种方法存储状态。 本主题稍后将对每个方法进行介绍。

Cookie

Cookie 存储所有请求的数据。

会话状态

会话状态是在用户浏览 Web 应用时用来存储用户数据的 ASP.NET Core 方案。

配置会话状态

Microsoft.AspNetCore.Session 包提供中间件来管理会话状态。
以下代码演示如何使用 IDistributedCache 的默认内存中实现设置内存中会话提供程序:

public class Startup {
    public void ConfigureServices (IServiceCollection services) {
        // Session 依赖于 cookie,所以要配置 cookie
        services.Configure<CookiePolicyOptions> (options => {
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });
        // Session 使用缓存,所有这里配置内存缓存
        services.AddDistributedMemoryCache ();
        // 注册 Session 服务
        services.AddSession (options => {
            options.IdleTimeout = TimeSpan.FromSeconds (10);
            options.Cookie.HttpOnly = true;
        });

        services.AddMvc ()
            .SetCompatibilityVersion (CompatibilityVersion.Version_2_1);
	}

    public void Configure (IApplicationBuilder app, IHostingEnvironment env) {
        if (env.IsDevelopment ()) {
            app.UseDeveloperExceptionPage ();
        } else {
            app.UseExceptionHandler ("/Error");
            app.UseHsts ();
        }

        app.UseHttpsRedirection ();
        app.UseStaticFiles ();
        // 启用 cookie
        app.UseCookiePolicy ();
        // 启用 Session
        app.UseSession ();
        app.UseHttpContextItemsMiddleware ();
        app.UseMvc ();
    }
}

配置会话状态后,HttpContext.Session 可用。

以异步方式加载会话状态

只有在 TryGetValue、Set 或 Remove 方法之前显式调用 ISession.LoadAsync 方法,ASP.NET Core 中的默认会话提供程序才会从基础 IDistributedCache 后备存储以异步方式加载会话记录。 如果未先调用 LoadAsync,则会同步加载基础会话记录

设置和获取会话值

ISession 扩展方法:

Get(ISession, String)
GetInt32(ISession, String)
GetString(ISession, String)
SetInt32(ISession, String, Int32)
SetString(ISession, String, String)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值