0

我有一个要求,我需要以编程方式创建站点模板。当我尝试以编程方式将站点另存为模板时,出现以下错误。 “在临时目录中生成解决方案文件时出错”。我已经完全控制了 c:\windows\temp 目录。我正在使用以下方法:

oWeb.SaveAsTemplate(templateName, templateTitle, tmplDesc, true);

(或者)

string solutionFileUrl = SPSolutionExporter.ExportWebToGallery(oWeb,templateName, templateTitle,tmplDesc,SPSolutionExporter.ExportMode.FullReuse,true);

面临同样的问题。

我可以将根网站保存为模板,例如 SPContext.Current.Web.SaveAsTemplate(templateName, templateTitle, tmplDesc, true); 但我需要将子站点保存为模板。

以下是我的 ULS 日志转储

System.Runtime.InteropServices.COMException:列表不存在。您选择的页面包含一个不存在的列表。它可能已被另一个用户删除。0x81020026,StackTrace:在 Microsoft.SharePoint.SPListCollection.EnsureListsData(Guid webId, String strListName) 在 Microsoft.SharePoint.SPListCollection.ItemByInternalName(Guid webId, String listName) 在 Microsoft.SharePoint.WebPartPages。 ListViewWebPart.EnsureList() 在 Microsoft.SharePoint.WebPartPages.ListViewWebPart.ShouldSerializeTitle() 在 Microsoft.SharePoint.WebPartPages.ListViewWebPart.EnsureListAndView(Boolean requireFullBlownViewSchema) 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterListViewWebPart.Write14_ListViewWebPart... ...(字符串 n,字符串 ns,ListViewWebPart o,布尔 isNullable,
在 System.Xml.Serialization.TempAssembly.InvokeWriter(XmlMapping 映射,XmlWriter xmlWriter,对象 o,XmlSerializerNamespaces 命名空间,字符串 encodingStyle,字符串 id)在 System.Xml.Serialization.XmlSerializer.S ... ...erialize(XmlWriter xmlWriter, Microsoft.SharePoint.WebPartPages.WebPart.SerializeXml(XmlWriter writer, XmlSerializer xmls, Boolean shouldSerializeAll) 在 Microsoft.SharePoint.WebPartPages.WebPart.SerializeWebPartXml(Boolean shouldExcludeSpecialProperties, TextWriter writer) 的对象 o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle、String id) Microsoft.SharePoint.WebPartPages.SPWebPartManager.GetWebPartXml(WebPart webPart,布尔 shouldUTF8Encode,Boolean shouldExcludeSpecialProperties, Boolean export) at Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager.ExportWebPart(WebPart webPart, XmlWriter writer) at Microsoft.SharePoint.SPSolutionExporter... ....GetFilesInFolderTree(SPFolder folder, SortedList2 filesInFolder, List1 webViews) 在 Microsoft.SharePoint.SPSolutionExporter.GetFilesInFolderTree(SPFolder 文件夹,SortedList 2 filesInFolder, List1 webViews) 在 Microsoft.SharePoint.SPSolutionExporter.GetFilesInFolderTree(SPFolder 文件夹,SortedList2 filesInFolder, List1 webViews) 在 Microsoft.SharePoint.SPSolutionExporter.GetFilesInWeb(String workflowTemplateName) 在 Microsoft.SharePoint.SPSolutionExporter.ExportWebAsSolution() 在 Microsoft.SharePoint.SPSolutionExporter.ExportWebToGallery(SPWeb web, String solutionFileName, Microsoft.SharePoint.SPWeb.SaveAsTemplate(String strTemplateName, String strTemplateTitle, String strTemplateDescription) 上的字符串标题、字符串描述、ExportMode exportMode、布尔 includeContent、String workflowTemplateName、String destina... ...tionListUrl、Action`1 solutionPostProcessor、Boolean activateSolution) , Boolean fSaveData) 在 TemplateIssueProject.ProjectTemplate.<>c__DisplayClass9.b__6() 在 Microsoft.SharePoint.SPSecurity.<>c__DisplayClass5。b__3() 在 Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode) 在 Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param) 在 Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode) 在 TemplateIssueProject.ProjectTemplate.SaveTemplate (字符串 webName、字符串模板名称、字符串模板... ...标题、字符串 tmplDesc)字符串模板名称、字符串模板... ...标题、字符串 tmplDesc)字符串模板名称、字符串模板... ...标题、字符串 tmplDesc)
在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 在 System.Web.UI.Page 的 TemplateIssueProject.ProjectTemplate.SiteCreation(String siteName) 在 TemplateIssueProject.TemplateIssewebpart.TemplateIssewebpart.btnSubmit_Click(Object sender, EventArgs e)。
System.Web.UI.Page.ProcessRequest 处的ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint) (布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)
在 System.Web.UI.Page.ProcessRequest() 在 System.Web.UI.Page.ProcessRequest(HttpContext context) 在 ASP.WKPSTD_ASPX__1961116010.ProcessRequest(HttpContext context) 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication .IExecut... ...ionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error) at System.Web.HttpApplication.BeginProcessRequestNotification (HttpContext 上下文,AsyncCallback cb)在 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext 上下文)在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer,IntPtr nativeRequestContext,IntPtr moduleData, Int32 flags) at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletio... ...n(IntPtr pHandler, RequestNotificationStatus¬ificationStatus)
在 System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus) 在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) 在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotification (IntPtr rootedObjectsPointer、IntPtr nativeRequestContext、IntPtr moduleData、Int32 标志)

System.NullReferenceException:对象引用未设置为对象的实例。在 Microsoft.SharePoint.SPSolutionExporter.GetFilesInFolderTree(SPFolder 文件夹,SortedList 2 filesInFolder, List1 webViews) 在 Microsoft.SharePoint.SPSolutionExporter.GetFilesInFolderTree(SPFolder 文件夹,SortedList 2 filesInFolder, List1 webViews) 在 Microsoft.SharePoint.SPSolutionExporter.GetFilesInFolderTree(SPFolder 文件夹,SortedList 2 filesInFolder, List1 webViews) 在 Microsoft .SharePoint.SPSolutionExporter.GetFilesInWeb(String workflowTemplateName) 在 Microsoft.SharePoint.SPSolutionExporter.GenerateSolutionFiles() 在 Microsoft.SharePoint.SPSolutionExporter.ExportWebAsSolution()

访问 /SitePages/MyTaskPage.aspx 时出现应用程序错误,错误=在临时目录中生成解决方案文件时出错。
在System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 在 System.Web.UI.Page的 TemplateIssueProject.ProjectTemplate.SiteCreation(String siteName)在 TemplateIssueProject.TemplateIssewebpart.TemplateIssewebpart.btnSubmit_Click(Object sender, EventArgs e)。 ProcessRequestMain(布尔型 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint)

System.InvalidOperationException:在临时目录中生成解决方案文件时出错。
在System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 在 System.Web.UI.Page的 TemplateIssueProject.ProjectTemplate.SiteCreation(String siteName)在 TemplateIssueProject.TemplateIssewebpart.TemplateIssewebpart.btnSubmit_Click(Object sender, EventArgs e)。 ProcessRequestMain(布尔型 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint)

请提出/提供建议。

问候,

4

2 回答 2

0

如果您通过功能添加了任何字段,并且您的字段具有 Overwrite="FALSE",则站点导出将失败。仅当需要将其设置为 TRUE 时才应使用 Overwrite,因为默认值为 FALSE。

这似乎是一个 SharePoint 错误。

您可能会在 ULS 日志中看到此属性。

于 2014-07-14T19:55:55.280 回答
0

下面的代码用于将站点保存为模板(根级别/子站点)

using System.Management;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
Add Reference to your solution from the below path.

Reference Path: C:\Windows\winsxs\msil_system.management.automation_31bf3856ad364e35_7.1.7601.18071_none_a682d4c5c360dacf\System.Management.Automation.dll

RunspaceInvoke oRunSpaceInvoke = new RunspaceInvoke();
                    FullWebUrl = SPContext.Current.Site.Url + "/" + objTemplate.strWebName;
                    strScriptToSaveTemp = @"Add-PSSnapin Microsoft.SharePoint.PowerShell ; Set-ExecutionPolicy -ExecutionPolicy RemoteSigned ;" +
                                    "$oWeb = Get-SPWeb " + FullWebUrl + " ; $oWeb.SaveAsTemplate('" + objTemplate.strTemplateTitle + "','" + objTemplate.strTemplateName + "','" + objTemplate.strTemplateDesc + "',1) \n";
oRunSpaceInvoke.Invoke(strScriptToSaveTemp).ToString();

问候, Mahesh http://sharepointchampion.blogspot.in/2014/05/save-site-as-template-programatically.html

于 2014-05-04T11:42:47.290 回答