Я пытаюсь программно создать список календарей в SharePoint 2010 всякий раз, когда определенный список создается с помощью решения для песочницы. Я реализовал ListAdded ListEventReceiver, чтобы запустить код для создания календаря.
public class GenerateCalendar : SPListEventReceiver
{
public override void ListAdded(SPListEventProperties properties)
{
base.ListAdded(properties);
// Exit out if this is not a MyList type
if(!IsMyList(properties))
return;
string calendarTitle = properties.List.Title + " Calendar";
SPWeb spWeb = properties.Web;
SPListTemplateType type = new SPListTemplateType();
type = SPListTemplateType.Events;
// Execution breaks here:
Guid listGuid = spWeb.Lists.Add(calendarTitle, "Associated Calendar", type);
SPList newList = spWeb.Lists[listGuid];
newList.OnQuickLaunch = properties.List.OnQuickLaunch;
newList.Update();
}
}
Когда я вызываю spWeb.Lists.Add (...), я получаю исключение SPException (запрошенное выполнение изолированного кода было отклонено, поскольку служба хоста изолированного кода была слишком занята для обработки запроса.)
Из документации MSDN я вижу, что метод SPListCollection.Add доступен в изолированных решениях (https://msdn.microsoft.com/en-us/library/office/ms413986(v=office.14).aspx ). Есть ли ограничение на создание такого списка в этом приемнике событий? Кто-нибудь знает, почему это не работает?
Отредактировано для добавления созданных файлов Feature.xml и Elements.xml.
Feature.xml:
<?xml version="1.0" encoding="utf-8"?>
<Feature xmlns="http://schemas.microsoft.com/sharepoint/"
Title="Calendar Generator"
Description="Generates a calendar"
Id="dfe3388c-c063-4873-a41b-5c066907c510"
Scope="Web">
<ElementManifests>
<ElementManifest Location="GenerateCalendar\Elements.xml" />
</ElementManifests>
</Feature>
Elements.xml
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers >
<Receiver>
<Name>GenerateCalendarListAdding</Name>
<Type>ListAdding</Type>
<Assembly>MyListGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5cff2198a602ec41</Assembly>
<Class>MyListGenerator.Event_Receivers.GenerateCalendar.GenerateCalendar</Class>
<SequenceNumber>10000</SequenceNumber>
</Receiver>
<Receiver>
<Name>GenerateCalendarListDeleting</Name>
<Assembly>MyListGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5cff2198a602ec41</Assembly>
<Class>MyListGenerator.Event_Receivers.GenerateCalendar.GenerateCalendar</Class>
<SequenceNumber>10000</SequenceNumber>
</Receiver>
<Receiver>
<Name>GenerateCalendarListAdded</Name>
<Type>ListAdded</Type>
<Assembly>MyListGenerator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5cff2198a602ec41</Assembly>
<Class>MyListGenerator.Event_Receivers.GenerateCalendar.GenerateCalendar</Class>
<SequenceNumber>10000</SequenceNumber>
</Receiver>
</Receivers>
</Elements>