我試圖以編程方式在SharePoint 2010中創建日曆列表,只要使用沙盒解決方案創建特定列表。我已經實現了一個ListAdded ListEventReceiver以運行代碼來生成日曆。在ListAdded列表中創建列表事件接收器
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文檔中,我可以看到在沙盒解決方案(https://msdn.microsoft.com/en-us/library/office/ms413986(v=office.14).aspx)中可用的SPListCollection.Add方法是。在這種事件接收器中創建列表是否有限制?有誰知道爲什麼這不起作用?
編輯添加的生成的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>
它似乎沒有任何這些東西。事件接收器是聲明式註冊的。我讓Visual Studio處理它,但我驗證了在鏈接的文檔中針對該示例生成的Feature.xml和Elements.xml,並且它匹配得相當好(除了元素的Receivers標記中缺少ListTemplateId屬性.XML)。我編輯了我的問題,並將文件的輸出添加到最後。 –
至於** WorkerProcessExecutionTimeout **,我測試了幾次,看看我收到異常之前需要多長時間,並且一直持續10秒左右。我通過PowerShell驗證了** WorkerProcessExecutionTimeout **(設置爲30)的值,甚至嘗試將其更改爲60,但這沒有什麼區別。僅10秒後發生異常。資源使用量約爲0.07(儘管這個數字似乎從0到0.15)。任何其他想法可能會導致這種情況? –