1

如何从无法反序列化的会话中获取或删除对象?(对象由另一个库存储在会话中,该库在运行时使用Assembly.LoadFrom方法加载)

我必须编写在每个请求上执行的方法,但我认为它遍历整个会话是个坏主意,有没有更好的方法从会话中删除不可反序列化的对象?

public void ResetSessionIfNeeded()
{
    if (Session.Mode == SessionStateMode.SQLServer || 
        Session.Mode == SessionStateMode.StateServer)
    {
        var index = 0;
        var count = Session.Count;
        while (index < count)
        {
            try
            {
                var tempObj = Session[index];
                index++;
            }
            catch (Exception)
            {
                Session.RemoveAt(index);
                count--;
            }
        }
    }
}
4

0 回答 0