我在 SharePoint 2010 Farm 中创建了 FBA 网站。该站点允许 Windows 和 FBA 身份验证。我已将服务器管理员(内置管理员成员)设置为应用程序池身份。同一个帐户在该站点的 Sql server 数据库中具有足够的权限。
我已经实现了一项功能。反过来,该功能正在修改场中站点的 web.Config。我已将代码放在 SPSecurity.RunWithElevatedPrivileges 块中。
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
Guid siteGuid = ((SPWeb)properties.Feature.Parent).Site.ID;
Guid webGuid = ((SPWeb)properties.Feature.Parent).ID;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(siteGuid))
{
using (SPWeb web = site.OpenWeb(webGuid))
{
SPWebApplication webApp = web.Site.WebApplication;
SPWebConfigModification myModification = new SPWebConfigModification("add[@name=\"assembly\"]", "/configuration/system.web/compilation/assemblies");
myModification.Value = "<add assembly=\"MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9e00227b2bfdcg7e\"/>";
myModification.Sequence = 0;
myModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
myModification.Owner = typeof(<MyWebpartNameGoesHere>).FullName;
webApp.WebConfigModifications.Add(myModification);
webApp.WebService.ApplyWebConfigModifications();
webApp.Update();
}
}
});
}
该代码对于任何 Windows 用户都运行得非常好。但是,当我以 FBA 用户身份进入该站点并尝试激活该功能时,我开始收到“拒绝访问”。错误。
错误:System.Security.SecurityException:访问被拒绝。在 Microsoft.SharePoint.Administration.SPPersistedObject.BaseUpdate() 在 Microsoft.SharePoint.Administration.SPWebApplication.ApplyWebConfigModifications() 在 Microsoft.SharePoint.Administration.SPWebService.ApplyWebConfigModifications()
谁能帮我解决这个问题?