2009-09-23 124 views
0

有没有人经验丰富的会议共享应用程序?asp.net mvc会话状态..求助?

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

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

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

有没有人曾经经历过这件事,如果是的话,你是如何解决它的?

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

谢谢大家!

GAV株系

+0

我想你已经测试了所有明显的事情就像在一个浏览器中清除浏览数据,然后改变浏览器?它不应该分享... – 2009-09-23 14:08:28

+0

弥敦道,我已经清除了我的缓存,饼干等。但这并没有什么区别,因为饼干不是通过浏览器和多台电脑共享。谢谢,还有其他建议吗? – Gavin 2009-09-23 14:15:41

+0

更新! SessionID在浏览器/计算机之间是不同的。所以看起来数据没有存储在会话中(即使我使用Session [“Key”] = Value) 任何想法的? Gav – Gavin 2009-09-23 14:43:02

回答

0

那么你会相信它...愚蠢的静态变量...

我想用一个静态私有变量,它会帮助我通过获取数据时,没有做尽可能多的工作,但因为它似乎这是邪恶的根源。 (医生邪恶小指)

谢谢大家!

** 注意这是怎么不! TO DO IT **

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

你具体使用存储的东西会话或者是你看到这TempData的调用(其中临时使用会话以及)?

+0

我将它们存储在HttpSessionState(HttpContext.Current.Session) – Gavin 2009-09-23 14:14:53