Как создать новый дочерний сайт в SharePoint 2010 с помощью веб-служб? - PullRequest
2 голосов
/ 13 января 2010

В SharePoint 2010 появился новый метод CreateWeb в веб-службе сайтов, предназначенный для создания новых дочерних сайтов SharePoint. Однако есть много проблем с этим - ну, по крайней мере, это мой опыт. Вот код, который должен правильно использовать веб-сервис и его метод:

Uri site = new Uri("http://sp2010site/"); 
string webServicePath = "_vti_bin/Sites.asmx";
string webServiceUrl = Path.Combine(site.AbsoluteUri, webServicePath);

Sites webService = new Sites();
webService.Credentials = CredentialCache.DefaultNetworkCredentials;
webService.Url = webServiceUrl;

//the following line creates the sub site
string result = webService.CreateWeb("newsite", "New Site", "Site desc", "STS#0", 
    1033, true, 1033, true, 1033, true, true, true, true, true, true, true);

Следующий код возвращает исключение Soap, если что-то случилось (например, сайт с адресом "newsite" уже существует или указанный шаблон не существует).

Если все в порядке, возникает исключение InvalidOperation с сообщением «В документе XML есть ошибка (1, 310).», Но сайт фактически создан!

Если все в порядке, но я использую свое собственное решение вместо нестандартного шаблона SharePoint (такого как сайт группы, т. Е. STS # 0), я получаю исключение Soap, и сайт не создается.

Это был ужасный опыт до сих пор. Пожалуйста, опубликуйте свой опыт создания под-сайта в SP 2010, и, что еще лучше, опубликуйте свои решения по этим проблемам, если они у вас есть. Ура всем!

Ответы [ 2 ]

1 голос
/ 15 января 2010

Шаги в бета-версии SP2010 для создания [под] сайта из [пользовательского] шаблона:

  • Активируйте шаблон вашего сайта
  • Перейдите на страницу betasoftwaresucks / _layouts / templatepick.aspx
  • Нажмите на вкладку «Пользовательский». Вы должны увидеть свой шаблон
  • Откройте инструмент, который может проверять DOM (например, IE Developer Tools или Firebug). DOM изменяется динамически, поэтому просмотр HTML просто не будет работать, если вы не заинтересованы в одном из шаблонов по умолчанию на выбранной вкладке по умолчанию.
  • Найдите значение элемента option, представляющего ваш шаблон. Это будет выглядеть как "{guid} #templatename". Убедитесь, что вкладка «Пользовательские» по-прежнему открыта, иначе вы не сможете ее найти.
  • Используйте это значение в качестве параметра шаблона для CreateWeb.

[Я запускаю SP SPAP вручную, чтобы увидеть полный запрос и ответ.]

0 голосов
/ 08 января 2013
SharepointSiteService.Sites siteWS = new SharepointSiteService.Sites();
                                siteWS.Credentials = new System.Net.NetworkCredential("user1", "password", "domain");
try 
{

                                            SharepointSiteService.Template[] templates;
                                            siteWS.GetSiteTemplates(1033, out templates);
                                            SharepointSiteService.Template template = (from SharepointSiteService.Template t
                                            in templates
                                                                                       where t.Title == "Test Template"
                                                                                       select t).FirstOrDefault();

siteWS.CreateWeb("<parent web name>" + "/" + <sub web name>" + "/" + <sub web name>", "Test web", "Test Web", template.Name, 1033, true, 1033, true, 1033, true, false, false, false, false, false, false); 
}
catch (Microsoft.SharePoint.SoapServer.SoapServerException e)
{
                                        System.Diagnostics.EventLog.WriteEntry("SharePoint Foundation", "soap exception" + e.Detail + e.Message + e.Source + e.Node);
}
catch (Exception ex)
{
                                        System.Diagnostics.EventLog.WriteEntry("SharePoint Foundation", "Site Created");
                                        System.Diagnostics.EventLog.WriteEntry("SharePoint Foundation", ex.Message + ex.Source + ex.StackTrace);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...