Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;“拒绝访问”;在SharePoint 2010中以编程方式激活功能时出错_C#_Sharepoint_Sharepoint 2010 - Fatal编程技术网

C# &引用;“拒绝访问”;在SharePoint 2010中以编程方式激活功能时出错

C# &引用;“拒绝访问”;在SharePoint 2010中以编程方式激活功能时出错,c#,sharepoint,sharepoint-2010,C#,Sharepoint,Sharepoint 2010,我是SharePoint新手,因此我正在遵循一些Microsoft学习指南。一个练习是创建一个功能接收器来修改Web.Config文件。 我检测到功能被激活或停用,并使用适当的标志调用以下例程 void setProliferationFlag(bool status) { SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://SharePoint")); try { SPWebConfigModifi

我是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
{ 
}
void setProliferationFlag(bool状态)
{
SPWebApplication webApp=SPWebApplication.Lookup(新Uri(“http://SharePoint"));
尝试
{
SPWebConfigModification mySetting=null;
如果(状态)
{
mySetting=新建SPWebConfigModification();
mySetting.Path=“配置/appSettings”;
mySetting.Name=“添加[@key='preventProliferation'][@value='1']”;
mySetting.Sequence=0;
mySetting.Owner=“Lab05Owner”;
mySetting.Type=SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
mySetting.Value=“”;
webApp.WebConfigModifications.Add(mySetting);
}
其他的
{
foreach(SPWebConfigModification)中的修改
webApp.WebConfigModifications)
{
如果(modification.Owner==“Lab05Owner”)
{
修改。值=”;
}
}
}
webApp.Update();
webApp.Farm.Services.GetValue().ApplyWebConfigModifications();
}
抓住
{ 
}
事件接收器工作正常。当我激活此功能时,此代码会运行,但当它到达“webApp.Update()”行时,它会失败,并出现“拒绝访问”错误。没有其他关于此错误的详细信息。我不确定拒绝访问的内容。 我正在笔记本电脑上的开发环境中运行。这是Windows 7上的Sharepoint Server 2010安装


您很可能需要管理访问权限。请查看允许您在系统帐户的安全上下文中执行此类操作的

您必须运行整个代码,包括打开
SPWebApplication
对象

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


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

首先:获得一个合适的stacktrace-->通过将customerrors设置为``en callstack to
callstack=“true”来更改web.config
。您是从哪个帐户激活此功能的?更重要的是,此帐户具有哪些权限..谢谢,是的,代码是从microsoft培训资料中直接复制的。请尝试一下。