Вы можете легко получить быстрый «снимок» объектов текущего сеанса, используя следующий (C #) код:
BinaryFormatter b = new BinaryFormatter();
StringBuilder debug = new StringBuilder();
MemoryStream m;
foreach (String s in Session.Keys) {
// try to serialize the object
var obj = Session[s];
if (obj != null) {
m = new MemoryStream();
try {
b.Serialize(m, obj);
debug.AppendFormat("{0}: {1} bytes\n", s, m.Length);
}
catch (Exception ex) {
debug.AppendFormat("ERROR: {0}, Message: {1}\n", s, ex.Message);
}
}
}
Затем отобразите строку «отладки» в вашем любимом текстовом контейнере.
Это полезно, потому что простое переключение на State Manager / SQL Server действительно скажет вам, что нельзя сериализовать, но остановится на первом несериализуемом объекте.Он также не скажет вам, какой ключ «владеет» этим объектом.
Код, адаптированный из этого ответа Stackoverflow .