Исключение из HRESULT: 0x80020009 (DISP_E_EXCEPTION)) в SharePoint, часть 2 - PullRequest
0 голосов
/ 17 апреля 2010

После этого сообщения , которое я опубликовал некоторое время назад, теперь я получаю одну и ту же ошибку каждый раз, когда пытаюсь переписать 2 веб-адреса.

По сути, это код. Он выполняется в LongRunningOperationJob:

SPWeb existingWeb = null;
using (existingWeb = site.OpenWeb(wedId))
{
    SPWeb destinationWeb = createNewSite(existingWeb);
    existingWeb.AllowUnsafeUpdates = true;
    existingWeb.Name = existingWeb.Name + "_old";
    existingWeb.Title = existingWeb.Title + "_old";
    existingWeb.Description = existingWeb.Description + "_old";

    existingWeb.Update()
    existingWeb.AllowUnsafeUpdates = false;

    destinationWeb.AllowUnsafeUpdates = true;
    destinationWeb.Name = existingWeb.Name;
    destinationWeb.Title = existingWeb.Title;
    destinationWeb.Description = existingWeb.Description;

    destinationWeb.Update();
    destinationWeb.AllowUnsafeUpdates = false;

    // null this for what its worth
    existingWeb = null;
    destinationWeb = null;
} // <---- Exception raised here

По сути, код пытается переименовать URL-адрес существующего сайта во что-то другое, и URL-адрес целевой сети указывает на URL-адрес старого сайта.

Когда я запускаю это в первый раз, я получил Исключение, упомянутое в теме.

Тем не менее, после каждого прогона я больше не вижу исключения.

Сети действительно переподключаются ... но ценой того, что приложение умирает от ненужной и ужасной смерти.

Я совершенно не понимаю, что происходит, и мне нужна срочная помощь. Сохраняет ли sharepoint скрытую таблицу от меня, или у приведенной выше логики есть фатальные проблемы?

Спасибо.

Ответы [ 3 ]

1 голос
/ 03 мая 2010

В конце я заменил блок using блоком try catch finally и аннулировал ссылки в finally. Это исключение никогда не беспокоило меня снова.

Спасибо.

0 голосов
/ 20 апреля 2010

Возможно, это не связано с вашей ошибкой, но я вижу две вещи с этим кодом:

  1. destinationWeb не удаляется
  2. в зависимости от порядка выписок, я ожидаю, что оба сайта получат суффикс "_old"

Я бы переписал код так:

SPWeb existingWeb = null; 
using (existingWeb = site.OpenWeb(wedId)) 
{ 
    using (SPWeb destinationWeb = createNewSite(existingWeb))
    {
        destinationWeb.AllowUnsafeUpdates = true; 
        destinationWeb.Name = existingWeb.Name; 
        destinationWeb.Title = existingWeb.Title; 
        destinationWeb.Description = existingWeb.Description; 

        existingWeb.AllowUnsafeUpdates = true; 
        existingWeb.Name += "_old"; 
        existingWeb.Title += "_old"; 
        existingWeb.Description += "_old"; 

        existingWeb.Update() 
        existingWeb.AllowUnsafeUpdates = false; 

        destinationWeb.Update(); 
        destinationWeb.AllowUnsafeUpdates = false; 
    }
}
0 голосов
/ 19 апреля 2010

Моя дикая догадка заключается в том, что, поскольку вы устанавливаете targetWeb в значение null, в конце блока using он пытается избавиться от объекта, которого там нет, и взрывается. Удалите это утверждение и попробуйте.

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