SharePoint 2013 — программное создание семейства веб-сайтов

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

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


person calorie712    schedule 16.07.2013    source источник
comment
Я не знаю, как это сделать в Javascript, но везде, где вы можете запустить код C# с повышенными привилегиями, просто вызовите любую перегрузку SPSite.CreateSelfServiceSite, и все готово.   -  person Geeky Guy    schedule 16.07.2013


Ответы (1)


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

  1. Я выполнил следующие шаги, чтобы настроить правильную среду разработки для SP2013 http://msdn.microsoft.com/en-us/library/fp179923.aspx
  2. Я создал новый пустой проект sharepoint 2013 VS2012, я выбрал решение фермы
  3. Add Web Reference
    • Right-click on Service References
    • Добавить ссылки на службы
    • Кнопка «Дополнительно»
    • Кнопка «Добавить веб-ссылку»
    • http://{SharePointServer}:{Порт}/_vti_adm/Admin.asmx
    • войти под учетной записью фермы
    • назовите ссылку "SPAdminService"
    • Кнопка «Добавить ссылку»
  4. Добавить приемник событий

    • Right-click on the project
    • Добавить
    • новый предмет
    • приемник событий
  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

person calorie712    schedule 18.07.2013