webpart context.session равен нулю - PullRequest
2 голосов
/ 25 марта 2010

Я использую массив сеанса для хранения переменной состояния для моей веб-части ... поэтому у меня есть свойство, подобное этому:

    public INode RootNode
    {
        get
        {
            return this.Context.Session["RootNode"] as INode;
        }
        set
        {
            this.Context.Session["RootNode"] = value as object;
        }
    }

Это обычно работает нормально.Я обнаружил, что иногда переменная context.session будет нулевой.

Я хотел бы знать, в каких условиях сессия вообще не имеет значения, и каков наилучший способ сохранить мой объект, когда это произойдет?Могу ли я просто назначить новый объект HttpSessionState контексту, или это все испортило?


Редактировать: Хорошо, так что это не просто нулевая сессия ... весь контекст облажался,Когда веб-часть входит в init, с контекстом все в порядке ... но когда она достигает события обратной передачи dropbox selectedindexchange (dropbox содержит идентификаторы узлов для использования для установки переменной rootnode), контекст в основном содержит нулевые свойства.* Кроме того, кажется, что это происходит только при выборе определенных идентификаторов.Это больше похоже на какую-то странную ошибку с моей стороны, чем проблему с моим пониманием сессии.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2013

Я не знаю, к какому типу файла это относится, но у меня была похожая проблема с файлом .ashx. Решением было то, что обработчик должен реализовать IReadOnlySessionState (для доступа только для чтения) или IRequiresSessionState (для доступа для чтения и записи). например:

public class login : IHttpHandler, IRequiresSessionState { ... }

Этим интерфейсам не требуется никакого дополнительного кода, но они служат маркерами для платформы.

Надеюсь, что это поможет.

Jonathan

0 голосов
/ 28 мая 2010

System.Web.HttpContext.Current.Session

Однако контекст не зависит от класса, скажем так. Это зависит от контекста используемой страницы / обработчика.

-Theo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...