Вопрос

У меня проблема создания сайтов на SharePoint Online. Код, который работает на месте, не работает на SharePoint Online.

Я не хочу беспокоить вас с кодом, я просто хочу чистый старт.

Так мой вопрос:

Как создать сайт на SharePoint Online программно?

--------------- Раствор -----------------

Причина, по которой это работает иногда:

Несоответствие Ваш опыт, это связано с тем, что, если первый раз, когда ваш сценарий запускается, требуется 20 сек. Если вы в то время начните это снова, это пришлось бы подождать первым, чтобы закончить. Но у него все еще есть только 30 отцветников, чтобы выполнить, включая время, проведенное в ожидании. Таким образом, первый скрипт тока 20 сек, чем только 10 Secounts остается на рабочую задание 20 секунд, и она будет прекращена. Вот почему это работает иногда.

--------------- редактировать -----------------

Вот код - это работает на на месте:

using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;

namespace EventReceiverProject1.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);

           DateTime dt = DateTime.Now;
           String strDate = "";
           strDate = dt.ToString("HH.mm.ss");

           properties.AfterProperties["Title"] = "Kevi2n Changed by event receiver at" + strDate;


               SPWeb createWebsite;
               SPWeb _w = properties.Web;
               SPWebTemplate spWebTemplate = _w.Site.GetWebTemplates(1030)["STS#1"];
               string title = properties.AfterProperties["Title"].ToString();
               createWebsite = _w.Webs.Add(title, title, "Sagwebsted omkring " + title, 1030, SPWebTemplate.WebTemplateSTS, false, false);
               // SPContentType obsolete = _w.ContentTypes[SPContentTypeId("0x01")];



       }


    }
}
.

------------ редактировать 2 -------------

using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;

namespace EventReceiverProject1.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);


       }

       /// <summary>
       /// An item was added
       /// </summary>
       public override void ItemAdded(SPItemEventProperties properties)
       {
           base.ItemAdded(properties);

           DateTime dt = DateTime.Now;
           String strDate = "";
           strDate = dt.ToString("HH.mm.ss");

           properties.ListItem["Title"] = "Kevi2n Changed by event receiver at" + strDate;
           properties.ListItem.Update();
           //properties.AfterProperties["Title"] = "Kevi2n Changed by event receiver at" + strDate;


           SPWeb createWebsite;
           SPWeb _w = properties.Web;
           SPWebTemplate spWebTemplate = _w.Site.GetWebTemplates(1030)["STS#1"];
           string title = properties.ListItem["Title"].ToString();
           createWebsite = _w.Webs.Add(title, title, "Sagwebsted omkring " + title, 1030, SPWebTemplate.WebTemplateSTS, false, false);
           // SPContentType obsolete = _w.ContentTypes[SPContentTypeId("0x01")];

       }


    }
}
.

Ссылка на файл Visual Studio. https://docs.google.com/file/d/0b9a1bcw2haaaxau03budtrvpscnm/edit ? PLI= 1

Это было полезно?

Решение

Попробуйте:

SPWeb createWebsite;
SPWeb _w = properties.Web;
SPWebTemplate spWebTemplate = _w.Site.GetWebTemplates(1030)["STS#1"];
string title = properties.ListItem["Title"].ToString();

_w.AllowUnsafeUpdates = true;           
createWebsite = _w.Webs.Add(title, title, "Sagwebsted omkring " + title, 1030, SPWebTemplate.WebTemplateSTS, false, false);
_w.update();
_w.AllowUnsafeUpdates = false;
.

Другие советы

Это, вероятно, связано с отсутствием разрешений.В SharePoint-Online мы также не можем использовать RunWithElevatedPrivileges, который выполняет указанный метод с полными управляющими правами, даже если пользователь не имеет полного контроля.

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

Смотрите Как написать полный доверительный прокси

Я видел ваш вопрос раньше, но не мог получить шанс ответить.В вашем коде вы сделали что-то подобное:

SPWeb web = ParentWeb.Webs.Add("param1","param2",...);
.

Однако вам не позволило небезопасном обновлениям в сети, под которым создаются сайты.Сделай это так:

ParentWeb.AllowUnsafeUpdates = true;
SPWeb web = ParentWeb.Webs.Add("param1","param2",...);
ParentWeb.Update()
ParentWeb.AllowUnsafeUpdates = false;
.

Я ранее создал сайты программные сайты в SharePoint онлайн, используя тот же подход.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top