Деактивация функции семейства веб-сайтов на MySite
-
20-09-2019 - |
Вопрос
У нас есть пользовательская главная страница, которая развертывается в веб-приложении MySite в соответствии с этими инструкциями:http://www.sharepointblog.com/2008/07/sp2007-custom-master-pages-on-subsites.html
Однако нам требуется возможность деактивировать эту функцию во всех семействах веб-сайтов, входящих в веб-приложение MySite.Эта функция построена как область семейства веб-сайтов.Как бы мы деактивировали их в приложении, которое потенциально имеет более 3000 личных сайтов?
Решение
Я бы создал простое консольное приложение, которое перебирает все семейства сайтов (MySites) вашего веб-приложения и деактивирует эту функцию.Вам придется запустить этот фрагмент кода с повышенными привилегиями (SPSecurity.RunWithElevatedPrivileges), поэтому у вас есть разрешение на деактивацию функции семейства веб-сайтов.
private static void DeleteWebsiteCollections()
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://MySiteHostWebApp"));
SPSiteCollection mySites = webApp.Sites;
foreach (SPSite site in mySites)
{
site.Features.Remove(new Guid("place your feature id here"));
if (null != site)
{
site.Dispose();
}
}
});
}
Другие советы
Этот код также можно вставить в мастер-страницу.Только site.Features.Remove(new Guid("поместите сюда идентификатор функции"));должно остаться.