SPDisposeCheck 实用程序提醒我有一个未正确处理的SPWeb.Add调用。正如您在下面看到的,典型的using(SPWeb NewWeb = webs.add(siteUrl ....)方法将不起作用,因为RunWithElevatedPrivileges会使return newWeb脱离上下文。
通过查看下面的newWeb = webs.Add()行,任何人都可以建议一种正确处理新 SPWeb 对象的方法吗?提前致谢。
public partial class SiteHelper
{
public static SPWeb CreateSiteFromSTP(SPWeb parentWeb, string newSiteSTP, int teamId)
{
try
{
SPWeb newWeb = null;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
string siteUrl = teamId.ToString();
SPWebCollection webs = parentWeb.Webs;
newWeb = webs.Add(siteUrl,.,.,.,);
TraceProvider.WriteLine("Activating Feature : MembersFeature ");
newWeb.Features.Add(new Guid(TeamSiteAttributes.MembersFeature), true);
TraceProvider.WriteLine("Activating Feature : BadgeAwardsFeature ");
newWeb.Features.Add(new Guid(TeamSiteAttributes.BadgeAwardsFeature), true);
TraceProvider.WriteLine("Activating Feature : ProjectBenefitsFeature ");
newWeb.Features.Add(new Guid(TeamSiteAttributes.ProjectBenefitsFeature), true);
TraceProvider.WriteLine("Activating Feature : TeamScoreFeature ");
newWeb.Features.Add(new Guid(TeamSiteAttributes.TeamScoreFeature), true);
newWeb.Update();
parentWeb.Update();
});
return newWeb;
}
catch (Exception ex)
{
TraceProvider.WriteLine("Error", ex);
throw;
}
}
}