2013-07-16 4 views
1

С введением приложений и решений. Каков наилучший способ создания семейства сайтов программно? Я нахожусь на месте. Это можно сделать с помощью JavaScript? Я могу создать подсайты с js, но как насчет коллекций сайтов?SharePoint 2013 - создание семейства сайтов программно

Я нашел код C# для создания семейства сайтов, но откуда его запустить? В приложении?

+0

Я не знаю, как это сделать в Javascript, но где угодно вы можете запускать код C# с повышенными привилегиями, просто вызовите любую перегрузку SPSite.CreateSelfServiceSite, и все готово. – Renan

ответ

2

Я успешно создал сайт-сайт программным путем с помощью приемника событий (C#). Microsoft подтвердила, что создание семейства сайтов с JavaScript невозможно. Я думал, что поделюсь своим полным решением, так как я не вижу полной документации от начала до конца.

  1. Я последовал за эти шаги, чтобы настроить правильную среду разработки для SP2013 http://msdn.microsoft.com/en-us/library/fp179923.aspx
  2. Я создал новую VS2012 пустой проект SharePoint 2013, я выбрал решение фермы
  3. Добавить веб-ссылку
    • Нажмите правую кнопку мыши на сервисных ссылках
    • Добавить ссылки на службы
    • Расширенная кнопка
    • Добавить веб-ссылки Кнопка
    • HTTP: // {SharePointServer}: {порт} /_vti_adm/Admin.asmx
    • Войти с учетом фермы
    • название ссылки "SPAdminService"
    • Добавить Reference Кнопка
  4. Добавить событие Receiver

    • правой кнопкой мыши по проекту
    • добавить
    • новый товар
    • приемник события
  5. Вот код для файла eventreceiver.cs:

    using System; 
    using System.Security.Permissions; 
    using Microsoft.SharePoint; 
    using Microsoft.SharePoint.Utilities; 
    using Microsoft.SharePoint.Workflow; 
    
    
    namespace SharePointProject5.EventReceiver1 
    { 
    /// <summary> 
    /// List Item Events 
    /// </summary> 
    public class EventReceiver1 : SPItemEventReceiver 
    { 
         /// <summary> 
         /// An item is being added. 
         /// </summary> 
         public override void ItemAdding(SPItemEventProperties properties) 
    { 
        base.ItemAdding(properties); 
        //create admin service reference 
        SPAdminService.Admin admService = new SPAdminService.Admin(); 
        //grant proper admin credentials to admin service 
        admService.Credentials = new System.Net.NetworkCredential("Farmaccount",   "Password", "Domain");    
        try 
        { 
         //specify new site collection path 
         String SitePath = "http://twv101sp13/pm/new2013"; 
         //setup properties to create the site, see reference below for more info 
         admService.CreateSite(SitePath, "new site", "description", 1033, "STS#1", "bluebunny\\sp13admin", "System Account", "[email protected]", "", "");       
        } 
        catch (System.Web.Services.Protocols.SoapException ex) 
        { 
         //I added this section so any errors would be logged in the server application log 
         SPSecurity.RunWithElevatedPrivileges(
         delegate() 
         { 
          System.Diagnostics.EventLog.WriteEntry("Application", "Message:\n" + ex.MRessage + "\nDetail:\n" + 
           ex.Detail.InnerText + 
           "\nStackTrace:\n" + ex.StackTrace); 
         }); 
        } 
    } 
    
    
    } 
    } 
    
  6. Таким образом, вы только хотите, чтобы это выполнить, когда определенный список добавляет элемент, поэтому вам нужно изменить файл Elements.xml.

  7. Откройте Elements.xml, замените эту строку <Receivers ListTemplateId="101"> с <Receivers ListUrl="http://{SharepointSite}/{targetListName}"> - это так мы можем предназначаться только этот список и не все списки на сайте

  8. правой кнопкой мыши проект и развернуть

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

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

В нижней части этой статьи рассказывается, как отлаживать приемник событий функции. Без этого я был бы мертв в воде: http://msdn.microsoft.com/en-us/library/ee231550.aspx

Эти три статьи помогли много:

  1. http://msdn.microsoft.com/en-us/library/websvcadmin.admin.createsite.aspx

  2. http://onceinawhilescribble.blogspot.com/2013/05/creating-simple-event-receiver-in.html

  3. http://www.sharepointpals.com/post/How-to-create-a-custom-list-level-event-receiver-in-SharePoint-2013-and-SharePoint-2010