C# 激活Sharepoint功能时的重复值

C# 激活Sharepoint功能时的重复值,c#,sharepoint,powershell,sharepoint-2010,C#,Sharepoint,Powershell,Sharepoint 2010,我在Sharepoint 2010中有一个功能,可以向Sharepoint网站添加SPWebConfigModification。它向appSettings部分添加一个键 功能激活代码如下所示: private static void ActivateWebConfigModifications(SPWebApplication webApplication) { webApplication.WebConfigModifications.Add(GetConfigMod

我在Sharepoint 2010中有一个功能,可以向Sharepoint网站添加SPWebConfigModification。它向appSettings部分添加一个键

功能激活代码如下所示:

private static void ActivateWebConfigModifications(SPWebApplication webApplication)
    {
        webApplication.WebConfigModifications.Add(GetConfigMod());

        webApplication.Update();
        webApplication.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
    }
private static void DeactivateWebConfigModifications(SPWebApplication webApplication)
    {
        Collection<SPWebConfigModification> modifications = webApplication.WebConfigModifications;

        foreach (SPWebConfigModification mod in modifications)
        {
            if (mod.Owner == GetConfigMod().Owner)
            {
                modifications.Remove(mod);
            }
        }

        webApplication.Update();
        webApplication.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications(); 
    }

有什么想法吗?

这看起来像是一个缓存问题,PowerShell缓存了很多SharePoint对象,包括网站模板。它也不会在GAC中重新加载更新的dll。部署wsp后,我通常会关闭所有PowerShell窗口,然后重新启动iis和owstimer。

上面的PowerShell代码块会重新填充$w对象,并显示调用Get-SPWebApplication时web应用程序的状态。我在部署步骤和功能激活之间运行代码块,它返回预期的结果。抱歉,我的意思是说我使用powershell来确认当时content DB中的内容
Add-PSSnapin Microsoft.SharePoint.PowerShell
$w = Get-SPWebApplication -Identity http://SiteUrl
$w.WebConfigModifications