【问题标题】:"Access Denied" error whilst programmatically activating a feature in SharePoint 2010以编程方式激活 SharePoint 2010 中的功能时出现“拒绝访问”错误
【发布时间】:2011-11-22 03:46:37
【问题描述】:

我是 SharePoint 的新手,因此我正在遵循一些 Microsoft 学习指南。一个练习是创建一个功能接收器来修改 Web.Config 文件。 我检测到该功能被激活或停用,并使用适当的标志调用以下例程。

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()”行时,它会失败并出现“拒绝访问”错误。没有其他关于错误的细节。我不确定访问被拒绝的是什么。 我在我的笔记本电脑上的开发环境中运行。这是在 Window 7 上安装的 Sharepoint Server 2010。

问候蒂姆

【问题讨论】:

  • 首先:获得一个不错的堆栈跟踪 --> 通过将 customerrors 设置为 ` ` 将调用堆栈更改为 CallStack="true" 来更改 web.config。您从哪个帐户激活该功能?更重要;此帐号有哪些权限..

标签: c# sharepoint sharepoint-2010


【解决方案1】:

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

您必须运行提升的整个代码,包括打开SPWebApplication 对象。您的方法将如下所示:

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

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

【讨论】:

  • 谢谢,是的,代码是直接从微软培训材料中复制而来的。会试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 2011-05-21
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多