Система.Исключение NullReferenceException при проверке if!= нулевой
Я использую обработчик ASHX, я хочу, чтобы обработчик проверил, если сессия != нулевой.
if (context.Session["Username"] != null)
И я получаю эту ошибку, указывая на эту строку:
Система.NullReferenceException: ссылка на объект не установлена на экземпляр объекта.
В чем проблема?
4 ответа:
if (context.Session["Username"] != null)
Реализует ли ваш обработчик
IRequiresSessionState
? В противном случае сеанс может быть недоступен.Из MSDN:
Указывает, что целевой обработчик HTTP требуется доступ на чтение и запись к значения состояния сеанса. Это маркер. интерфейс и не имеет методов.
Используйте его вот так. Один из инкапсулирующих объектов может быть уже null:
if (context != null) if (context.Session != null) if (context.Session["Username"] != null) { // Do stuff }
У меня была похожая проблема с Ан .файл ashx. Решение состояло в том, что обработчик должен реализовать IReadOnlySessionState (для доступа только для чтения) или IRequiresSessionState (для доступа только для чтения и записи). например:
Эти интерфейсы не нуждаются в дополнительном коде, но действуют как маркеры для фреймворка.public class myModule: IHttpHandler, IRequiresSessionState { ... }
Надеюсь, что это поможет.
Джонатан