我有一个MasterPage,我正在部署到SharePoint 2007服务器。我正在使用一个功能和一个wsp来进行部署。部署后,我的新主页无法选择并用于我的网站。然后,如果我激活我的功能,我可以选择我的母版页。但是,当我停用我的功能(甚至撤回解决方案并将其从SharePoint中删除)时,主页仍可供选择,并且属于我的功能/解决方案的所有其他文件仍在SharePoint上。那么,有什么方法可以在我的功能停用时删除主页面,然后再次激活它,让它再次可用吗?
希望这是有道理的,谢谢。
答案 0 :(得分:3)
默认情况下,SharePoint不会清除作为功能激活的一部分而部署的文件。
为了删除母版页和其他相关文件,您需要为功能编写功能接收器,实现FeatureDeactivating方法,并使用对象模型代码而不是CAML删除文件。功能接收器的MSDN文档为here,并且有博客示例编写功能接收器代码all over the web。
请记住,要删除母版页,首先需要确保将网站集中所有网站的母版页重置为默认/其他可用母版页。您还需要注意不要删除在母版页或页面布局之间共享的资源文件(CSS,图像等)。
答案 1 :(得分:1)
首先确保您在功能停用时不再使用母版页。然后你可以删除它。
SPWeb web = (SPWeb)properties.Feature.Parent;
string customMasterUrl = (new Uri(web.Url + "/_catalogs/masterpage/Sample.master")).AbsolutePath;
if (web.MasterUrl != customMasterUrl)
{
try
{
SPFile file = web.GetFile(customMasterUrl);
SPFolder masterPageGallery = file.ParentFolder;
SPFolder temp = masterPageGallery.SubFolders.Add("Temp");
file.MoveTo(temp.Url + "/" + file.Name);
temp.Delete();
}
catch (ArgumentException)
{
return;
}
}