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