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