C# &引用;“拒绝访问”;在SharePoint 2010中以编程方式激活功能时出错
我是SharePoint新手,因此我正在遵循一些Microsoft学习指南。一个练习是创建一个功能接收器来修改Web.Config文件。 我检测到功能被激活或停用,并使用适当的标志调用以下例程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
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 tocallstack=“true”来更改web.config
。您是从哪个帐户激活此功能的?更重要的是,此帐户具有哪些权限..谢谢,是的,代码是从microsoft培训资料中直接复制的。请尝试一下。