Share via


Как создавать сайты в SharePoint 2007?

Коллеги,

Несколько слов, о том, как программно создавать сайты в MOSS 2007.

Простейший способ – использовать stsadm (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN>).

 Синтаксис - stsadm.exe -o createsite

           -url <url>

           -ownerlogin <DOMAIN\name>

           -owneremail <someone@example.com>

           [-ownername <display name>]

           [-lcid <language>]

           [-sitetemplate <site template>]

           [-title <site title>]

           [-description <site description>]

           [-hostheaderwebapplicationurl <web application url>]

           [-quota <quota template>]

Однако, зачастую необходим доступ к API портала из бизнес-логики приложения. Один наиболее популярных способов – использование веб-сервисов. В частности, MOSS 2007 предоставляет доступ к административным функциям через веб-сервисы. Для этого используется веб-сервис https://server:port/_vti_adm/admin.asmx

Теперь более подробно.

Вообще, для тестирования работы с веб-сервисами я для себя открыл прекрасную утилиту wfetch (входит в IIS 6.0 resource tools kit, который можно скачать с https://www.microsoft.com/downloads/thankyou.aspx?familyId=56fc92ee-a71a-4c73-b628-ade629c89499&displayLang=en)

С помощью этой утилиты можно манипулировать вызовами веб-сервисов, смотреть результаты и т.п. В целом, рекомендую.

Итак, цель – создать с помощью веб-сервиса сайт. Открываем в IE https://moss:48162/_vti_adm/admin.asmx?op=CreateSite – операция CreateSite в административном веб-сервисе.

Копируем в текстовый файл шаблон SOAP-запроса, который выглядит примерно так

POST /_vti_adm/admin.asmx HTTP/1.1

Host: moss

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "https://schemas.microsoft.com/sharepoint/soap/CreateSite"

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">

  <soap:Body>

    <CreateSite xmlns="https://schemas.microsoft.com/sharepoint/soap/">

      <Url>string</Url>

      <Title>string</Title>

      <Description>string</Description>

      <Lcid>int</Lcid>

      <WebTemplate>string</WebTemplate>

      <OwnerLogin>string</OwnerLogin>

      <OwnerName>string</OwnerName>

      <OwnerEmail>string</OwnerEmail>

      <PortalUrl>string</PortalUrl>

      <PortalName>string</PortalName>

    </CreateSite>

  </soap:Body>

</soap:Envelope>

Преобразуем его в примерно следующее содержание.

Content-Type: text/xml; charset=utf-8

SOAPAction: "https://schemas.microsoft.com/sharepoint/soap/CreateSite"

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="https://www.w3.org/2001/XMLSchema"

xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">

  <soap:Body>

    <CreateSite xmlns="https://schemas.microsoft.com/sharepoint/soap/">

      <Url>https://moss.litwareinc.com/sites/mySite1</Url>

      <Title>That is my new site(1)</Title>

      <Description>The site created via web Service</Description>

      <Lcid>1033</Lcid>

      <WebTemplate>Sts#2</WebTemplate>

      <OwnerLogin>LITWAREINC\Administrator</OwnerLogin>

      <OwnerName>Administrator</OwnerName>

      <OwnerEmail>Administrator@LITWAREINC.com</OwnerEmail>

      <PortalUrl>string</PortalUrl>

      <PortalName>string</PortalName>

    </CreateSite>

  </soap:Body>

</soap:Envelope>

Следует обратить внимание на параметр WebTemplate, который задает шаблон сайта.

Возможные варианты:

· STS#0 (Team Site)

· STS#1 (Blank Site)

· STS#2 (Document Workspace)

· MPS#0 (Basic Meeting Workspace)

· MPS#1 (Blank Meeting Workspace)

· MPS#2 (Decision Meeting Workspace)

· MPS#3 (Social Meeting Workspace)

· MPS#4 (Multipage Meeting Workspace)

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

Из этого упражнения легко сделать, к примеру, vb-скрипт для автоматического создания сайта.

Set oHTTP = CreateObject("Microsoft.XMLHTTP")

Set oShell = WScript.CreateObject ("WSCript.shell")

Set WshNetwork = WScript.CreateObject("WScript.Network")

Set fso = CreateObject("Scripting.FileSystemObject")

Set OutputFile = fso.CreateTextFile("c:\temp\response.xml",true)

Set xmldom = CreateObject("Microsoft.XMLDOM")

SitePath = "https://moss.litwareinc.com"

AdminPort = "48162"

SiteName = "MySite3"

SiteTemplate = "sts#0"

OwnerName = "Administrator"

OwnerLogin = "LITWAREINC\Administrator"

OwnerEmail = "Administrator@LITWAREINC.COM"

SiteUrl = SitePath & "/sites/" & SiteName

SiteProv = SitePath & ":" & AdminPort & "/_vti_adm/admin.asmx"

SiteProvXml = "<?xml version=""1.0"" encoding=""utf-8""?><soap:Envelope xmlns:xsi=""https://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""https://www.w3.org/2001/XMLSchema"" xmlns:soap=""https://schemas.xmlsoap.org/soap/envelope/""><soap:Body><CreateSite xmlns=""https://schemas.microsoft.com/sharepoint/soap/""><Url>" & SiteUrl & "</Url><Title>" & SiteName & "</Title><Description>" & SiteName & "</Description><Lcid>1033</Lcid><WebTemplate>" & SiteTemplate & "</WebTemplate><OwnerLogin>" & OwnerLogin & "</OwnerLogin><OwnerName>" & OwnerName & "</OwnerName><OwnerEmail>" & OwnerEmail & "</OwnerEmail><PortalUrl></PortalUrl><PortalName></PortalName></CreateSite></soap:Body></soap:Envelope>"

   oHTTP.open "POST", SiteProv, false

   oHTTP.setRequestHeader "Accept-Language", "en-us"

   oHTTP.setRequestHeader "Content-Type", "text/xml"

   oHTTP.setRequestHeader "Accept-Encoding", "gzip, deflate"

   oHTTP.setRequestHeader "SOAPAction:", "https://schemas.microsoft.com/sharepoint/soap/CreateSite"

   oHTTP.send SiteProvXml

Outputfile.write oHTTP.responseText