System.NullReferenceException При проверке, если! = Null - PullRequest
3 голосов
/ 25 апреля 2011

Я использую обработчик ASHX, я хочу, чтобы обработчик проверил Session! = Null.

if (context.Session["Username"] != null)

И я получаю эту ошибку, указывая на эту строку:

System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.

В чем проблема?

Ответы [ 4 ]

10 голосов
/ 25 апреля 2011
if (context.Session["Username"] != null)

Ваш обработчик реализует IRequiresSessionState? В противном случае сеанс может быть недоступен.

С MSDN :

Указывает, что целевой обработчик HTTP требует доступа на чтение и запись к значения состояния сеанса. Это маркер интерфейс и не имеет методов.

4 голосов
/ 25 апреля 2011

Используйте это так. Один из инкапсулирующих объектов может быть уже нулевым:

if (context != null)
  if (context.Session != null)
    if (context.Session["Username"] != null) {
      // Do stuff
}
1 голос
/ 25 апреля 2011

Да, я бы сказал, что проверьте, не является ли контекст первым нулевым.

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

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

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

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

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

Джонатан

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