“访问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。
认为蒂姆
很可能需要管理权限。查看SPSecurity.RunWithElevatedPrivileges
方法,它允许您在系统帐户的安全上下文中执行此类操作。
您必须高架运行整个代码,包括打开SPWebApplication
对象。你的方法看起来像这样:
void SetProliferationFlag(…)
{
SPSecurity.RunWithElevatedPrivileges(() =>
{
// … your code goes here …
});
}
还请注意,在代码中使用空catch
子句是非常糟糕的做法。始终处理所有异常,至少记录它们并重新抛出。