“访问Denied"程序激活SharePoint 2010功能时出现错误

本文关键字:功能 2010 错误 SharePoint 激活 Denied 访问 quot 程序 | 更新日期: 2023-09-27 18:15:28

我是SharePoint的新手,所以我正在遵循一些微软学习指南。一个练习是创建一个功能接收器来修改Web。配置文件。我检测被激活或未被激活的特性,并使用适当的标志调用以下例程。

void setProliferationFlag(bool status)
{
    SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://SharePoint"));
try
{
    SPWebConfigModification mySetting = null;
    if (status)
    {
    mySetting = new SPWebConfigModification();
    mySetting.Path = "configuration/appSettings";
    mySetting.Name = "add [@key='preventProliferation'] [@value='1']";
    mySetting.Sequence = 0;
    mySetting.Owner = "Lab05Owner";
    mySetting.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
    mySetting.Value = "<add key='preventProliferation' value='1' />";
    webApp.WebConfigModifications.Add(mySetting);
}
else
{
    foreach (SPWebConfigModification modification in 
        webApp.WebConfigModifications)
    {
        if (modification.Owner == "Lab05Owner")
        {
            modification.Value = "<add key='preventProliferation' value='0' />";
        }
    }
}
    webApp.Update();
    webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
}
catch
{ 
}

事件接收器工作正常。当我激活该功能时,此代码运行,但当它到达"webApp.Update()"行时,它以"Access Denied"错误失败。没有关于该错误的其他细节。我不确定被拒绝访问的是什么。我在笔记本电脑上的开发环境中运行。这是一个安装在windows 7上的Sharepoint Server 2010。

认为蒂姆

“访问Denied"程序激活SharePoint 2010功能时出现错误

很可能需要管理权限。查看SPSecurity.RunWithElevatedPrivileges方法,它允许您在系统帐户的安全上下文中执行此类操作。

您必须高架运行整个代码,包括打开SPWebApplication对象。你的方法看起来像这样:

void SetProliferationFlag(…)
{
    SPSecurity.RunWithElevatedPrivileges(() =>
    {
        // … your code goes here …
    });
}

还请注意,在代码中使用空catch子句是非常糟糕的做法。始终处理所有异常,至少记录它们并重新抛出。