В настоящее время я выполняю тест, в котором пытаюсь удалить семейство сайтов программным способом. Тем самым я осознал странное поведение SharePoint.
Я использовал следующий код для проверки удаления семейства сайтов.
private static void DeleteSiteCollection(string urlSiteToDelete)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://wssdev06"));
webApp.Sites.Delete(urlSiteToDelete);
webApp.Update();
});
}
Поэтому, когда я вызываю метод с URL-адресом существующего семейства сайтов, семейство сайтов удаляется, как и ожидалось. Но когда я вызываю метод со значением NULL, пустой строкой или URL-адресом, который не связан с семейством сайтов, тогда SharePoint удаляет семейство сайтов, которое находится под root (например, http://wssdev06/).
Я не уверен, что я слишком дамп, чтобы использовать этот метод SPSiteCollection.Delete (), или я не понял концепцию семейств сайтов и управляемых путей, но я думаю, что это действительно странное и тревожное поведение.
Я мог воспроизвести это поведение в другом веб-приложении, но у меня еще не было возможности протестировать в другой среде SharePoint.
Так я что-то не так делаю или это ошибка?
UPDATE:
Итак, я провел еще несколько расследований и понял, что это должно иметь какое-то отношение к индексатору класса SPSiteCollection, который возвращает корневое семейство сайтов, если под указанным URL-адресом нет семейства сайтов. Похоже, ошибка.