Изменение файла web.config программным способом с помощью метода WebService.ApplyWebConfigModifications () приводит к ошибке - PullRequest
0 голосов
/ 04 февраля 2011

Я создал сайт FBA в ферме SharePoint 2010.На сайте разрешена проверка подлинности Windows и FBA.Я установил администратора сервера (член встроенного администратора) в качестве удостоверения пула приложений.Эта же учетная запись имеет достаточные права доступа в базе данных сервера Sql для сайта.

Я реализовал одну функцию.Функция, в свою очередь, модифицирует 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.ApplyWebConfigModification () помочь любому решить эту проблему (1010 * * 1011).

1 Ответ

1 голос
/ 04 февраля 2011

Вы должны серьезно подумать, хотите ли вы, чтобы пользователи активировали этот код.Внесение изменений в web.config - дело администратора, а не пользователя.

Пожалуйста, прочитайте это: http://www.itidea.nl/index.php/access-denied-when-activating-a-feature/

С уважением, Анита

...