ASP.NET Session 不跨页面存储

发布于 2024-07-29 23:16:14 字数 949 浏览 10 评论 0原文

首先,我创建了一个登录页面,将一个键值对添加到会话中,并验证该页面上的会话是否保存该对。 接下来,我尝试转到另一个页面,在会话中查找该对,但它不在那里。 我已将会话超时设置为 15000,这样就不会超时。 我目前使用静态类 HttpContext.Current.Session 来查看会话。 每个页面都会调用这个静态类来查看会话,但每次会话密钥计数 = 0 时,除非在登录页面上配对之后。

public static class UserAuthenticationManager
{
    public static bool IsAuthenticated()
    {
        UserAuthenticationTicket ticket = ((UserAuthenticationTicket)HttpContext.Current.Session[DefinesPL.UserTicketSessionName]);

        string redirectUrl = String.Format(DefinesPL.LoginPage);

        if (ticket != null)
        {
            if (ticket.IsExpired())
            {
                HttpContext.Current.Session.Abandon();
                HttpContext.Current.Response.Redirect(redirectUrl, true);
            }
        }
        else
        {
            HttpContext.Current.Session.Abandon();
            HttpContext.Current.Response.Redirect(redirectUrl, true);
        }

        return true;
    }

First, I created a Login page that added a key value pair to the session and verified that on that page the session holds that pair.
Next, I attempt to go to another page that looks for that pair in the session and it is not there. I've put the timeout for the session to 15000 so it won't timeout.
I currently use a static class to look at the session, HttpContext.Current.Session.
Each Page calls this static class to look at the session but every time the session key count = 0 except after I the pair on the login page.

public static class UserAuthenticationManager
{
    public static bool IsAuthenticated()
    {
        UserAuthenticationTicket ticket = ((UserAuthenticationTicket)HttpContext.Current.Session[DefinesPL.UserTicketSessionName]);

        string redirectUrl = String.Format(DefinesPL.LoginPage);

        if (ticket != null)
        {
            if (ticket.IsExpired())
            {
                HttpContext.Current.Session.Abandon();
                HttpContext.Current.Response.Redirect(redirectUrl, true);
            }
        }
        else
        {
            HttpContext.Current.Session.Abandon();
            HttpContext.Current.Response.Redirect(redirectUrl, true);
        }

        return true;
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等待我真够勒 2024-08-05 23:16:18

可能还想确保您已将 Global.asax 添加到您的项目中。 我相信我以前遇到过这个问题,为每个 HTTP 请求创建一个新会话。

Might also want to make sure you have Global.asax added to your project. I believe i ran into this before, where a new session was created for every HTTP request.

烟花肆意 2024-08-05 23:16:17

最常见的原因是 cookie 被禁用。 您需要需要 Cookie,或切换到无 Cookie 会话模型,这有点难处理。

The most common cause is cookies being disabled. You'll need to require cookies, or switch to a cookieless session model, which is a little harder to work with.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文