在Authorizaiton类中,我将用户对象分配给会话
HttpContext.Current.Session[Constants.SessionActiveUserInfo] = userInfo;
它在本地工作正常,但在服务器中它正在抛出
“对象引用未设置为对象的实例。”
当我使用controller / actionmethod名称命中url时,由于会话,它会抛出HTTP错误500(“对象引用未设置为对象的实例。”)。 然后,如果我再次点击网址,它工作正常。
为什么表现得像这样?有什么帮助吗?
答案 0 :(得分:0)
我在模型视图控制器中遇到了一个问题,其中会话未被实例化。我相信您遇到的问题是,当您导航到该控制器时,会话实际上并不驻留在服务器上。
下面,我不是直接调用Session,而是调用SessionModify<Example>("Sample", example);
如果它存在,将分配值,如果不是,它将添加Session。
我创建了一个类来帮助管理会话:
public static class Storage
{
public static void SessionAdd<T>(string label, T value)
{
if(!string.IsNullOrEmpty(label))
HttpContext.Current.Session.Add(label, value);
}
public static void SessionModify<T>(string label, T value)
{
if(HttpContext.Current.Session[label] != null)
{
HttpContext.Current.Session[label] = value;
return;
}
SessionAdd(label, value);
}
public static T SessionModifyAndReturn<T>(string label, T value) where T : class, new()
{
var content = new T();
if(HttpContext.Current.Session[label] != null)
HttpContext.Current.Session[label] = value;
else { SessionAdd(label, value); }
content = value;
return content;
}
}