Я пытаюсь программно создать сайт SharePoint из пользовательского шаблона с использованием кода ASPX.Это код, связанный с обработчиком события для кнопки, которая запускает действие:
protected void Trigger_OnClick(object sender, EventArgs e)
{
SPSite site = new SPSite("http://portal.innovit.internal/sites/lab/prosjektstyring-prototyp");
using (SPWeb web = site.OpenWeb())
{
try
{
SPWebTemplate template = getSiteTemplate(web, "prosjektrom", 1044);
// Create new subsite
web.Webs.Add("templateSubsite3", "Subsite created in VS from template 3",
"What the title says", 1033, template.Name, false, false);
}
catch (Exception ex)
{
TextOutput.Text = ex.Message;
StackTrace.Text = ex.StackTrace;
}
}
}
/// <summary>
/// Look up a site template from site by name and Locale id (1033 = english
/// 1044 = bokmål). Return null if no result.
/// </summary>
private SPWebTemplate getSiteTemplate(SPWeb parent, String templateName,
uint localeID)
{
// Loop through all available templates
foreach (SPWebTemplate thisTemplate in parent.GetAvailableWebTemplates(localeID))
{
if (thisTemplate.Title.ToLower().Equals(templateName.ToLower()))
return thisTemplate;
}
return null;
}
Дело в том, что шаблон, который я ищу , действительно найден вызовомto parent.GetAvailableWebTemplates (): его имя шаблона равно "{54833785-C62D-48E0-9DC7-1D458BB60814} #prosjektrom", а его название - "prosjektrom".Тем не менее, я получаю исключение
"File or arguments not valid for site template {54833785-C62D-48E0-9DC7-1D458BB60814}#prosjektrom. Parameter name: WebTemplate"
at Microsoft.SharePoint.SPWebTemplateCollection.get_Item(String strKey)
at Microsoft.SharePoint.SPWeb.ApplyWebTemplate(String strWebTemplate)
at Microsoft.SharePoint.SPWeb.CreateWeb(String strWebUrl, String strTitle, String strDescription, UInt32 nLCID, String strWebTemplate, Boolean bCreateUniqueSubweb, Boolean bConvertIfThere)
at Microsoft.SharePoint.SPWebCollection.Add(String strWebUrl, String strTitle, String strDescription, UInt32 nLCID, String strWebTemplate, Boolean useUniquePermissions, Boolean bConvertIfThere)
at CreateSiteDialog2.Layouts.CreateSiteDialog2.CreateSiteDialog2.Trigger_OnClick(Object sender, EventArgs e)
Это кажется мне очень странным, поскольку шаблон определенно входит в число доступных шаблонов.Кто-нибудь знает, что происходит?