Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc asp.net mvc会话状态。。帮忙?_Asp.net Mvc_Iis 6_Session State - Fatal编程技术网

Asp.net mvc asp.net mvc会话状态。。帮忙?

Asp.net mvc asp.net mvc会话状态。。帮忙?,asp.net-mvc,iis-6,session-state,Asp.net Mvc,Iis 6,Session State,有没有人体验过会话在应用程序范围内共享 我的MVC应用程序具有普通的设置,但由于某些原因,我的会话正在共享 当我可以在FF和IE之间切换并保持登录状态时,我并没有真正考虑过这一点,但现在,我注意到我也可以切换机器 我的web.config中没有任何设置会话状态的内容,因此我假设它是基于cookie的,但似乎不是 以前有没有人经历过这种情况?如果有,你是如何解决的 仅供参考:我正在Server2003IIS6上运行它 谢谢大家 Gav您是专门在会话中存储东西,还是在临时使用会话的TempData调

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

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

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

我的web.config中没有任何设置会话状态的内容,因此我假设它是基于cookie的,但似乎不是

以前有没有人经历过这种情况?如果有,你是如何解决的

仅供参考:我正在Server2003IIS6上运行它

谢谢大家


Gav

您是专门在会话中存储东西,还是在临时使用会话的TempData调用中看到了这一点。。。愚蠢的静态变量

我认为通过使用静态私有变量,它可以帮助我在获取数据时不做那么多工作,但它似乎是邪恶的根源。(邪恶小指博士)

谢谢大家

**注意,这是怎么回事!!要做到这一点**

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;
    }
}

我想您已经测试了所有显而易见的事情,比如在一个浏览器中清除浏览器数据,然后更改浏览器?它不应该是共享的…Nathan,我已经清除了缓存、cookies等,但这不会有什么区别,因为cookies不会在浏览器和多台计算机之间共享。谢谢,还有其他建议吗?更新!浏览器/计算机之间的会话ID不同。因此,数据似乎没有存储在会话中(即使我使用的是会话[“Key”]=Value),有什么想法吗?Gav@Gavin:发布大约5分钟后意识到我的意思是“注销并在另一个浏览器中清除会话”。:)因此,如果会话ID不同,具体共享什么?我将它们存储在HttpSessionState(HttpContext.Current.session)中