C# Session.Remove(“Session”变量“);不工作?
您好,下面是我在完成某些任务后试图删除会话的内容。但是session.remove()在这里不起作用C# Session.Remove(“Session”变量“);不工作?,c#,asp.net,session,C#,Asp.net,Session,您好,下面是我在完成某些任务后试图删除会话的内容。但是session.remove()在这里不起作用 if (Session["CaseNumber"] != "" || Session["CaseNumber"] != null) { casenumber = Session["CaseNumber"].ToString(); guid = Session["guid"].ToString(); _dura
if (Session["CaseNumber"] != "" || Session["CaseNumber"] != null)
{
casenumber = Session["CaseNumber"].ToString();
guid = Session["guid"].ToString();
_duration = bal.viewServiceActivity(guid);
case1 = bal.viewCaseDetail(casenumber);
dt = bal.getRelatedNotes(guid);
Session.Remove("CaseNumber");
Session.Remove("guid");
}
else
{
casenumber = Session["searchCase"].ToString();
guid = Session["caseGuid"].ToString();
_duration = bal.viewServiceActivity(guid);
case1 = bal.viewCaseDetail(casenumber);
dt = bal.getRelatedNotes(guid);
Session.Remove("searchCase");
Session.Remove("caseGuid");
}
上面显示的部分代码并没有什么问题。只需要了解它是如何工作的
Session.Remove(key)
删除会话字典中用于密钥的内存。使用第二种方法时:Session[“searchCase”]=null代码>,尽管该值为空,但该密钥仍将存在于会话中
尝试将会话[“Key\u Name”]
设置为null
。例如:
if (Session["CaseNumber"] != "" || Session["CaseNumber"] != null)
{
casenumber = Session["CaseNumber"].ToString();
guid = Session["guid"].ToString();
_duration = bal.viewServiceActivity(guid);
case1 = bal.viewCaseDetail(casenumber);
dt = bal.getRelatedNotes(guid);
Session["CaseNumber"] = null; // Set NULL
Session["guid"] = null; // Set NULL
}
Session.Remove()
不会绕过对象引用和内存管理的所有基本.net规则来销毁对象。这里需要了解的是,Session.Remove()
完全按照它的建议执行:它从对象的内部集合中删除对对象的引用。没什么可期待的了
如果您需要销毁某些内容,则需要实现IDisposable
,此外,如果您匆忙使用GC.collect()
,可以指示垃圾收集器进行收集
请勾选此问题:
证实了这一点
它看起来更像是一种优化或所谓的标准实现方式。
当您移除一个对象时,它会被标记为“移除”,但不会真正移除…除非需要空间。
垃圾收集就是这样工作的。仅仅因为一个对象超出了作用域,并不意味着它的析构函数被调用,内存被立即释放。可能是GC
可以在很久以后删除对象
不过,作为最后一项检查,请执行以下操作:
请确保您没有查看页面的缓存版本,或者您没有在应用程序中的某个位置再次将项目添加到会话对象中。可能的重复项可以参考此[此处][1][1]:谢谢我已尝试了所有方法,但没有任何结果。您如何知道“它不起作用”?你在检查什么,怎么做,什么时候做?