【问题标题】:asp.net mvc session state.. help?asp.net mvc 会话状态.. 帮助?
【发布时间】:2009-09-23 14:05:20
【问题描述】:

有没有人体验过会话在应用程序范围内被共享?

我的 MVC 应用程序具有 vanilla 设置,但由于某种原因,我的会话正在共享。

当我可以在 FF 和 IE 之间切换并保持登录状态时,我并没有真正考虑过,但现在,我注意到我也可以切换机器。

我的 web.config 没有设置会话状态的任何内容,所以我认为它是基于 cookie 的,但似乎不是。

以前有没有人遇到过这种情况,如果有,您是如何解决的?

仅供参考:我在 Server 2003 IIS6 上运行它。

谢谢大家!!

Gav

【问题讨论】:

  • 我假设您已经测试了所有显而易见的事情,例如在一个浏览器中清除浏览器数据然后更改浏览器?它不应该分享...
  • Nathan,我已经清除了我的缓存、cookie 等。但这并没有什么不同,因为 cookie 不会在浏览器和多台计算机之间共享。不过谢谢,还有其他建议吗?
  • 更新! SessionID 在浏览器/计算机之间是不同的。所以似乎数据没有存储在会话中(即使我使用的是 Session["Key"] = Value)有什么想法吗?加夫
  • @Gavin:在发布后大约 5 分钟意识到我的意思是“注销并在另一个浏览器中清除会话”。 :)
  • 那么如果 SessionID 不同,究竟共享了什么?

标签: asp.net-mvc iis-6 session-state


【解决方案1】:

您是专门在 Session 中使用存储内容,还是在 TempData 调用中看到了这一点(临时也使用 session)?

【讨论】:

  • 我将它们存储在 HttpSessionState (HttpContext.Current.Session) 中
【解决方案2】:

你会相信吗...愚蠢的静态变量...

我认为使用静态私有变量可以帮助我在获取数据时不做太多工作,但看起来它是万恶之源。 (邪恶小指医生)

谢谢大家!

** 请注意,这是不可能的!这样做 **

public class UserHelper
{
    private static UserSession _session;
    public static UserSession Session
    {
        get
        {
        // If we already have the session, don't get it
        // from the session state
        if (_session == null)
        {
            // Attempt to get the session from the
            // session state
            _session = GetUserSessionFromSession(HttpContext.Current.Session);
            if (_session == null)
            {
            // Create a new session object
            _session = new UserSession();
            }
        }
        return _session;
        }
        set
        {
        // Set the local value
        _session = value;
        // Add the object to the session state
        HttpContext.Current.Session["SMEUser"] = _session;
        }
    }

    public static void Logout()
    {
        Logout(HttpContext.Current.Session);
    }

    public static void Logout(HttpSessionState session)
    {
        _session = null;
        session.Clear();
    }

    public static UserSession GetUserSessionFromSession(HttpSessionState session)
    {
        // Get the session from the session state
        UserSession us = session["SMEUser"] as UserSession;
        return us;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2010-09-28
    • 2011-06-07
    • 2010-11-02
    • 1970-01-01
    相关资源
    最近更新 更多