2011-12-30 2 views
1

Я пытаюсь выполнить итерацию через каждую сеть и ее веб-страницы, получить список дочерних веб-сайтов и т. Д., Но проблема в том, что итерация приходит в сеть, у которой нет подсайтов это дает ИсключениемЛогическая ошибка foreach Web.webs

Ссылка на объект не указывает на экземпляр объекта

Код здесь

private void dwnEachWeb(SPWeb TopLevelWeb) 
    { 
     if (TopLevelWeb.Webs != null) 
     { 
      dwnEachList(TopLevelWeb); 
     } 
     foreach (SPWeb ChildWeb in TopLevelWeb.Webs) 
     { 
      dwnEachWeb(ChildWeb); 
      ChildWeb.Dispose(); 
     } 
    } 

Я даже пытался «если (TopLevelWeb.Webs.Counts == 0) ", но проблема в том, что когда не будет субвеков, тогда как программа проверит, равна ли она нулевым или нулевым, интересно, есть ли какой-либо способ проверить, есть ли в сети коллекция веб-страниц, например, если я могу проверить веб. Сети существуют или нет.

ответ

1

Вы получите исключение нулевой ссылки, если TopLevelWeb.Webs оценивает значение null. Так что попробуйте:

private void dwnEachWeb(SPWeb TopLevelWeb) 
{ 
    if (TopLevelWeb != null && TopLevelWeb.Webs != null) 
    { 
     dwnEachList(TopLevelWeb); 

     foreach (SPWeb ChildWeb in TopLevelWeb.Webs) 
     { 
      dwnEachWeb(ChildWeb); 
      ChildWeb.Dispose(); 
     } 
    } 
} 

Это делает только foreach если TopLevelWeb и TopLevelWeb.Webs не является нулевым.

+0

i Пробовал и по-прежнему дает исключение, так как в какой-то момент TopLevelWeb становится null .. (я отлаживал его) –

+0

Добавьте также предложение охраны: я отредактирую свой ответ. –

+0

Готово, работает до сих пор, Cheers –

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