ASP.Net SessionState с помощью SQL Server - данные шифруется?

Потому что window.event не существует в Firefox. Это потому, что в браузере есть разные модели событий, и вам придется иметь дело с их различиями или использовать библиотеку, такую ​​как jQuery, чтобы не иметь дело со всеми различиями между браузерами. Добро пожаловать в DOM.

7
задан Raj Rao 8 June 2009 в 23:17
поделиться

2 ответа

Нет шифрование есть. Данные хранятся с использованием двоичной сериализации (это намного быстрее, чем xml). Подробности смотрите в классе SessionStateUtility (вы можете просмотреть его, используя бесплатный Reflector ). Это код, который используется для сериализации:

internal static void Serialize(SessionStateStoreData item, Stream stream)
{
    bool flag = true;
    bool flag2 = true;
    BinaryWriter writer = new BinaryWriter(stream);
    writer.Write(item.Timeout);
    if ((item.Items == null) || (item.Items.Count == 0))
    {
        flag = false;
    }
    writer.Write(flag);
    if ((item.StaticObjects == null) || item.StaticObjects.NeverAccessed)
    {
        flag2 = false;
    }
    writer.Write(flag2);
    if (flag)
    {
        ((SessionStateItemCollection) item.Items).Serialize(writer);
    }
    if (flag2)
    {
        item.StaticObjects.Serialize(writer);
    }
    writer.Write((byte) 0xff);
}
13
ответ дан 6 December 2019 в 09:21
поделиться

У меня недавно была эта проблема, и пришлось деконструировать сохраненное состояние, чтобы исследовать проблему производительности ; примерный код был примерно таким:

byte[] blob = ... // TODO
using (var ms = new MemoryStream(blob))
using (BinaryReader reader = new BinaryReader(ms)) {
    int len = reader.ReadInt32();
    bool f1 = reader.ReadBoolean(), f2 = reader.ReadBoolean();
    SessionStateItemCollection items = null;
    HttpStaticObjectsCollection sitems = null;
    if (f1) {
        items = SessionStateItemCollection.Deserialize(reader);
    }
    if (f2) {
        sitems = HttpStaticObjectsCollection.Deserialize(reader);
    }
    if (reader.ReadByte() != 0xFF) {
        throw new InvalidOperationException("corrupt");
    }
    if (items != null) {
        int max = items.Count;
        for (int i = 0; i < max; i++) {
            object obj = items[i];
            Console.WriteLine("{0}\t{1}", items.Keys[i],
                obj == null ? "n/a" : obj.GetType().FullName);
        }
    }
}
7
ответ дан 6 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: