使用Web Service.Apply WebConfigModifications()方法以编程方式更改web.config文件正在给出错误

时间:2011-02-04 13:18:38

标签: sharepoint-2010 web-config fba

我在SharePoint 2010 Farm中创建了FBA网站。该站点允许窗口和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()

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您必须考虑是否希望用户激活此代码。 进行web.config修改是管理员的事情,而不是用户的事情。

请阅读:http://www.itidea.nl/index.php/access-denied-when-activating-a-feature/

此致,Anita