Asp.net core mvc HttpContext.Session.about()不';我不能在MVC内核中工作。Session.clear不';t注销我的用户

Asp.net core mvc HttpContext.Session.about()不';我不能在MVC内核中工作。Session.clear不';t注销我的用户,asp.net-core-mvc,Asp.net Core Mvc,我得到一个错误,上面写着“ISession不包含‘放弃’的定义,并且找不到接受‘ISession’类型的第一个参数的可访问扩展方法‘放弃’” 我尝试过使用session.clear,但即使在注销后,如果我打开网站,用户也会登录 这就是我得到的错误 这是我在ASP.NET核心项目中实现会话的方式: 创建SessionTimeout筛选器: public class SessionTimeout : ActionFilterAttribute { public override void O

我得到一个错误,上面写着“ISession不包含‘放弃’的定义,并且找不到接受‘ISession’类型的第一个参数的可访问扩展方法‘放弃’”

我尝试过使用session.clear,但即使在注销后,如果我打开网站,用户也会登录

这就是我得到的错误


这是我在ASP.NET核心项目中实现会话的方式:

创建SessionTimeout筛选器:

public class SessionTimeout : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (context.HttpContext.Session == null ||!context.HttpContext.Session.TryGetValue("UserID", out byte[] val))
        {
            context.Result =
                new RedirectToRouteResult(new RouteValueDictionary(new
                {
                    controller = "Pages",
                    action = "SessionTimeout"
                }));
        }
        base.OnActionExecuting(context);
    }
}
在Startup.cs中注册此筛选器:

在ConfigureServices方法中:

services.AddSession(options =>
            {
                options.IdleTimeout = TimeSpan.FromMinutes(10);               
            });
在配置中,添加:

app.UseSession();
最后,用过滤器装饰您的类/方法,如:

    [SessionTimeout]
    public class DashboardController : Controller
要根据视图中的注销事件销毁会话,请执行以下操作:

public IActionResult Logout()
        {
            HttpContext.Session.Clear();
            return RedirectToAction("Login", new { controller = "Pages" });
        }

我的会话似乎存储在cookie中,在使用会话时未被清除/删除。clear()

所以我用了这个,它看起来很有魅力

foreach (var cookie in Request.Cookies.Keys)

        {
            if (cookie == ".AspNetCore.Session")
                Response.Cookies.Delete(cookie);
        }
HttpContext.Session.Clear()在我的帐户/注销页面的控制器中的live站点上不适用于我

我发现将a href设置为/Account/Logout/是个问题。我将链接更改为/Account/Logout


如果您在.NET Core 3.1中遇到会话问题,请尝试以下方法。这也可能解释了为什么我无法让Cookie身份验证发挥作用-我最终放弃了,转而使用会话。

可能重复@PeterB您提到的问题没有回答我的问题,因为我已经尝试过会话。这也很清楚,但对我来说仍然不起作用。Tnx a ton Rahul。如果Cookie名称已更改,这从配置中获取名称:
HttpContext.Response.Cookies.Delete(\u sessionOptions.Value.Cookie.name)
其中
\u sessionOptions
作为
IOptions