2013-06-10 3 views
1

я следующий код в класс, который называется страницей .NET (ASP.NET WebForms во время события page_load):HttpContext.Current равна нулю для ботов

public static bool BrowserSupportsJS 
{ 
    get { return (HttpContext.Current.Session["js_support"] != null 
    && ((bool)HttpContext.Current.Session["js_support"])); 
} 

Эта линия бросает исключение для любого bot: googlebot, bingbot и т. д.

Исключение: ссылка объекта не установлена ​​в экземпляр объекта и находится на линии доступа get. Похоже, HttpContext.Current имеет значение null.

+4

Почему бы не просто проверить 'HttpContext.Current' за нуль до доступа к ней? –

+0

Правильно. Просто проверьте, является ли оно нулевым и возвращает false для всего. –

+6

@GeorgeJohnston Я сомневаюсь, что 'HttpContext.Current' имеет значение null в коде, который выполняется при получении HTTP-запроса. Скорее всего, это 'Session', поскольку он полагается на файлы cookie сеансов, которые боты обычно не поддерживают. –

ответ

3

Вы должны проверить Session для null так:

public static bool BrowserSupportsJS 
{ 
    get 
    { 
     if(HttpContext.Current.Session == null) 
      return false; 
     return (HttpContext.Current.Session["js_support"] != null 
      && ((bool)HttpContext.Current.Session["js_support"])); 

    } 
} 
+0

Это должно устранить проблему, спасибо. – firebird

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