2013-05-02 4 views
2

Я получаю эту ошибку в своем пользовательском классе. код выглядит следующим образом, я выделил строку, в которой я получаю там ошибку, и я уже проверил, что печенье существует:Ссылка на объект не установлена ​​в экземпляр объекта. (HttpContext.Current.Request)

static private Dictionary<string,string> KeyValueGet() 
{ 
    Dictionary<string, string> ArrKeyVal = new Dictionary<string, string>(); 
    NameValueCollection CookieData = new NameValueCollection(); 
    **if (HttpContext.Current.Request.Cookies["CartData"].Values != null)** 
    { 
     CookieData = HttpContext.Current.Request.Cookies["CartData"].Values; 
     string[] CookieKeys = CookieData.AllKeys; 
     foreach (string s_key in CookieKeys) 
     { 
      ArrKeyVal.Add(s_key, CookieData[s_key]); 
     } 
    } 
    return ArrKeyVal; 
} 

UPDATE: Я добавил заявление, если это проверить для «нулевого» Безразлично» t даже получить через это, я получаю то же исключение внутри оператора if, похоже, что он не может обработать то, что HttpContext.Current.Request.

Любой ввод оценивается.

+1

Вы пытались проверить, что такое null? I.e., это HttpContext? Текущий? Запрос? Печенье [ "CartData"]? – aquinas

+1

@RealityDysfunction, что-то пустое для исключения, которое должно быть выбрано, это необязательно должно быть 'Cookies [" CartData "]', вы отлаживали и видели, какой объект имеет значение null? Это может быть «HttpContext.Current.Request». – Ryan

+0

Моя интуиция подсказывает мне, что HttpContext.Current.Request является виновником, потому что это новый класс, который я создал (а не код), и у меня возникли проблемы с получением запроса на работу до тех пор, пока я не добавлю HttpContext.Current. – RealityDysfunction

ответ

3

Файл cookie может существовать, но для его получения вам необходимо иметь page, запрос от клиента и соединение со своим браузером, чтобы можно было прочитать куки-файлы, которые находятся в браузере.

Если вы делаете этот вызов внутри потока или процесса или в конце страницы или где-либо вне страницы, то HttpContext.Current имеет значение null и/или HttpContext.Current.Request имеет значение null.

Попробуйте запустить эту функцию внутри вашего вызова страницы.

Обычно я добавляю аргумент assert для такого случая, чтобы напомнить мне, если я делаю вызов из потока, который не появился на странице.

Debug.Assert(HttpContext.Current != null, "Need to be call from inside a page"); 
+1

Спасибо, я вызвал Response/Request через страницу, и все прошло. – RealityDysfunction

Смежные вопросы