如何解决Httpcontext.current.session变为null
Httpcontext.current.session在本地代码中变为空,会话仍未处于活动状态,并且当单击按钮控制器将收到发布请求并在httpcontext.current.session中对用户设置用户详细信息进行身份验证后,我没有手动清除会话,设置后,如果我发送另一个发布请求,则所有值都将变为空
internal class AspDotNet : Base
{
internal AspDotNet(String key)
: base(key)
{
}
internal override void Set(Object value)
{
this.Value = value;
HttpContext.Current.Session[base.Key] = value;
}
internal override Object Get()
{
this.Value = HttpContext.Current.Session[base.Key];
return this.Value;
}
internal override void Remove()
{
HttpContext.Current.Session.Remove(base.Key);
}
}
}
解决方法
您可以这样尝试吗?我相信静态课程将为您服务。
public static class SessionPersiter
{
public static int? UserID
{
get
{
if (HttpContext.Current == null)
return (Int32?)null;
var sessionData = HttpContext.Current.Session[CommonConstants.UserIDSessionKey];
if (sessionData == null)
return (Int32?)null;
return (int)sessionData;
}
set
{
HttpContext.Current.Session[CommonConstants.UserIDSessionKey] = value;
}
}
public static UserDTO AuthenticatedUser
{
get
{
if (HttpContext.Current == null)
return null;
var sessionData = HttpContext.Current.Session[CommonConstants.AuthenticatedUserKey];
if (sessionData == null)
return null;
return (UserDTO)sessionData;
}
set
{
HttpContext.Current.Session[CommonConstants.AuthenticatedUserKey] = value;
}
}
public static long? LastLoginID
{
get
{
if (HttpContext.Current == null)
return (long?)null;
var sessionData = HttpContext.Current.Session[CommonConstants.LastLoginIDSessionKey];
if (sessionData == null)
return (long?)null;
return (long)sessionData;
}
set
{
HttpContext.Current.Session[CommonConstants.LastLoginIDSessionKey] = value;
}
}
}
然后这样打电话
var userToken = SessionPersiter.AuthenticatedUser.Token;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。