По умолчанию вы можете хранить любой тип объекта в сеансе, потому что он хранится в памяти.Таким образом, вы можете использовать его для хранения ListItemCollection ListBox.
Session["MyListBoxItems"] = ListBox1.Items.Cast<ListItem>().ToArray();
, а затем вы можете использовать AddRange для их восстановления:
ListBox1.Items.AddRange((ListItem[])Session[ "MyListBoxItems" ]);
Редактировать : Если вы используете старую версию фреймворка, используйте CopyTo :
ListItem[] myListItemArray = new ListItem[ ListBox1.Items.Count ];
ListBox1.Items.CopyTo(myListItemArray, 0);
Session[ "MyListBoxItems" ] = myListItemArray;