首页 > 解决方案 > 会话存储在 asp.net 核心 web api 中返回 null

问题描述

在我的 asp.net core web api 3.1 应用程序中,我尝试添加会话状态,但它总是返回 null。在应用程序中,我安装了 Microsoft.AspNetCore.Session(2.2.0)。

我还在 Startup.cs 的 ConfigureServices 方法中添加了以下代码

services.AddDistributedMemoryCache();

services.AddSession(options =>
{
   options.IdleTimeout = TimeSpan.FromMinutes(10);
   options.Cookie.HttpOnly = true;
   options.Cookie.IsEssential = true;
});

app.UseSession();
app.UseEndpoints(endpoints =>
{
   endpoints.MapControllers();
});

在中间件管道中。

我还添加了以下代码作为会话扩展

public static class SessionHelper
{

    public static void Set<T>(this ISession session, string key, T value)
    {
        session.SetString(key, JsonConvert.SerializeObject(value));
    }

    public static T Get<T>(this ISession session, string key)
    {
        var value = session.GetString(key);
        return value == null ? default : JsonConvert.DeserializeObject<T>(value);
    }
}
Finally, I Set session data
SessionHelper.Set<User>(HttpContext.Session, "user", userInfo);
and tried to get as
SessionHelper.Get<User>(HttpContext.Session, "user");

但是我在获得会话价值时总是得到空值。

标签: asp.net-core-webapi

解决方案


推荐阅读