SharePoint 2010 - доступ запрещен во время ApplyWebConfigModifications ()

У меня SharePoint 2010 установлен на компьютере с Windows Server 2008 R2, на котором также размещен SQL Sever 2008 R2. Я пытаюсь развернуть решение, включающее веб-части в среде 2010, которое отлично работает в MOSS 2007.

Функция веб-части имеет приемник функций, который обновляет файл web.config. Когда я пытаюсь активировать эту функцию через графический интерфейс Site Collection Feature, я получаю сообщение об отказе в доступе. Я вошел на сервер и в SharePoint с учетной записью пула приложений, которая также является членом группы администраторов домена, группы локальных администраторов и группы администраторов фермы SharePoint. Эта учетная запись также является dbo на SQL Server.

Эта же функция отлично активируется с помощью команды stsadm.

Я подробно разобрался в этой проблеме и вот что нашел:

Глядя на сборки Microsoft в отражателе, моя ошибка исходит из метода SPWebApplication.ApplyWebConfigModifications (). Я вижу операторы трассировки из SPWebConfigFileChanges.RemoveModificationsWebConfigXMLDocument и SPWebConfigFileChanges.ApplyModificationsWebConfigXMLDocument. Следующая строка - это Сохранить (str).

Ниже приведены результаты журналов SharePoint, относящиеся к этой ошибке:

Применить изменения веб-конфигурации к веб-приложению
5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Общие 8grn Medium WebConfigModification: применение изменений веб-конфигурации к веб-приложению на сервере tw-s1-m4400-007,
5a817a37 -7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 88gw Medium WebConfigModification: применение изменений веб-конфигурации к файлу C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 2008 \ web .config 5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 887b Средний Удаление узла веб-конфигурации - конфигурация пути / system.web / httpModules Имя узла добавить [@ name = 'JivePageController ']
5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 887b Средний Удаление узла веб-конфигурации - конфигурация пути / system.web / httpHandlers Имя узла добавить [@ path = 'ScriptResource .axd ']
5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 887b Средний Удаление узла веб-конфигурации - конфигурация пути / время выполнения / * [local-name () = "assemblyBinding" и namespace-uri () = "urn: schemas-microsoft-com: asm.v1"] Имя узла [local-name () = "зависимая сборка"] [ /@name="System.Web. Расширения. Дизайн »] 5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 887b Средний Удаление узла веб-конфигурации - конфигурация пути / время выполнения / * [local-name () = "assemblyBinding" и namespace-uri () = "urn: schemas-microsoft-com: asm.v1"] Имя узла [local-name () = "зависимая сборка"] [ /@name="System.Web. Расширения "] 5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 8gp8 Средний WebConfigModification: добавление узла веб-конфигурации - Путь - конфигурация / время выполнения / * [local-name () = " assemblyBinding "и namespace-uri () =" urn: schemas-microsoft-com: asm.v1 "] Имя узла - [local-name () =" independentAssembly "] [ / @ name =" System.Web.Extensions "] Значение узла - в файле web.config C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 2008 \ web.config 5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 8gp8 Средний WebConfigModification: добавление узла веб-конфигурации - Путь - конфигурация / время выполнения / * [local-name () = " assemblyBinding "и namespace-uri () =" urn: schemas-microsoft-com: asm.v1 "] Имя узла - [local-name () =" independentAssembly "] [ / @ name =" System.Web.Extensions.Design "] Значение узла - в файле web.config C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 2008 \ web.config 5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 8gp8 Средний WebConfigModification: добавление узла веб-конфигурации - Путь - configuration / system.web / httpHandlers Имя узла - добавить [@ path = 'ScriptResource.axd'] Значение узла - в файле web.config C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 2008 \ web.config 5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 8gp8 Средний WebConfigModification: добавление узла веб-конфигурации - Путь - конфигурация / system.web / httpModules Имя узла - добавить [@ name = 'JivePageController'] Значение узла - в файле web.config C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 2008 \ web.config 5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.09 w3wp.exe (0x15C4)
0x1444 SharePoint Foundation
Топология e5mb Средний WcfReceiveRequest: LocalAddress: ' http: //tw-s1-m4400-007.jivedemo.local: 32843 / 15702467ece1408fatab77 / System.ServiceModel.Channels.ServiceChannel 'Действие: xxx MessageId:' urn: uuid: 4e859532-ed7f-4937-8b88-68d3af43d589 '9f403ede-2c94-490b-a05c-e169cc5fe58d

24.02.2010 16: 05: 41.10 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология f6kh High WebConfig Модификация: Сохранение файла web.config C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 2008 \ web .config для применения изменений к веб-приложению SharePoint - 2008 не удалось. Сообщение об ошибке - Доступ к пути 'C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 2008 \ web.config' запрещен.
5a817a37-7bf6-4d26-be51-207369e38f5b

24.02.2010 16: 05: 41.10 w3wp.exe (0x0F64)
0x1034 SharePoint Foundation
Топология 8j2o High WebConfigModification: изменения не применяются к веб-приложению SharePoint - 2008 с URL-адресом xxx
5a817a37-7bf6-4d26 -be51-207369e38f5b

Любая помощь будет оценена по достоинству!


person user281254    schedule 25.02.2010    source источник
comment
Можете ли вы добавить в свою функцию код, который изменяет web.config. Есть два способа внести изменения. Один метод выполняет это через задание, а другой - за счет внесения изменений в процесс.   -  person Jeff    schedule 25.02.2010
comment
Вот основные 2 строчки. Остальной код распределен по ряду вспомогательных методов. _webApplication.WebService.ApplyWebConfigModifications (); _webApplication.Update (); Можете ли вы указать мне на два способа внесения упомянутых вами изменений?   -  person user281254    schedule 26.02.2010


Ответы (5)


Проверьте, включен ли UAC (контроль учетных записей пользователей) и выключите его, если это тестовая / демонстрационная среда. Другой вариант (и лучший вариант для производственных сред) - щелкнуть правой кнопкой мыши ссылку центрального администратора и выбрать вариант «Запуск от имени администратора».

Я на некоторое время обгорел от этого, и причина в том, что проверка безопасности выполняется перед запуском задания по развертыванию решения. Если вы работаете с включенным UAC, эта проверка всегда завершается ошибкой (см. Раздел «Примечания» в MSDN для system.security.principal.windowsprincipal).

person Nick Hadlee    schedule 28.04.2010
comment
Мне wsnt разрешено добавить еще одну ссылку (ограничение для нового пользователя), но ссылка MSDN имеет вид msdn.microsoft.com/en-us/library/ - person Nick Hadlee; 28.04.2010
comment
(заменяет Тима, которому нужно было перейти к другим проблемам) Это функция, относящаяся к семейству сайтов, поэтому я не могу активировать ее через центрального администратора. Для усмешки я попробовал запустить IE на сервере SharePoint, выполнив роль администратора runas. Неудивительно, что при активации функции все равно не удается. - person Kirk Liemohn; 29.04.2010
comment
Тим только что сказал мне, что если вы выполняете администратор runas для запуска SP Central Admin, вы фактически получаете дополнительные ссылки для администрирования служб. Очень интересно. Однако я не вижу ссылок для активации функций семейства веб-сайтов :-(. - person Kirk Liemohn; 29.04.2010
comment
Просто попробовал выключить UAC (после этого пришлось перезагрузить компьютер). Это тоже не помогло :-(. - person Kirk Liemohn; 29.04.2010
comment
Извините, я недостаточно внимательно прочитал ваш вопрос. В моей проблеме было отказано в доступе. Учитывая, что вы активируете свою функцию с помощью идентификатора SC, вам будет интересно узнать, какое поведение вы получите, если заключите свой код в блок RunWithElevatedPrivileges. msdn.microsoft.com/en-us/library/bb466220.aspx - person Nick Hadlee; 02.05.2010
comment
Это сработало для меня - почему / как это выходит за рамки меня (на стороне сервера влияет учетная запись, выполняющая процесс на стороне клиента?) - person Robert MacLean; 18.01.2011

Убедитесь, что удостоверение пула приложений имеет доступ для чтения и записи к каталогу, содержащему файл web.config.

Также убедитесь, что удостоверение вашего задания таймера SharePoint имеет доступ для чтения и записи к каталогу, содержащему файл web.config.

person Jeff    schedule 25.02.2010
comment
В этой тестовой среде я использую одну и ту же учетную запись для всего, и это также та же учетная запись, с которой я вошел в систему. Это администратор на машине, администратор фермы в SharePoint, администратор семейства сайтов в SharePoint. И когда я запускаю функцию STSADM -o activate, используя эту учетную запись, она работает нормально. Это не работает, только когда я использую пользовательский интерфейс. Надеюсь, это поможет! - person user281254; 27.02.2010

Попробуйте изменить область действия функции на WebApplication и активировать ее из Central Admin.

person zincorp    schedule 25.02.2010
comment
функция добавляет веб-части. Для этого мне нужно отделить модификации Web.config от связанных веб-частей, поскольку моя функция содержит модули. - person user281254; 26.02.2010

C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 2008 \ web.config для применения изменений к веб-приложению SharePoint - 2008 не удалось. Сообщение об ошибке: Доступ к пути C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 2008 \ web.config запрещен.

Проверьте права доступа к этому файлу и настройте их соответствующим образом.

person Janis Veinbergs    schedule 26.02.2010

Наше решение заключалось в реорганизации нашей архитектуры функций таким образом, что теперь у нас есть функция в области веб-приложения в дополнение к 2 функциям в области фермы и 2 функциям в области семейства сайтов. Мы переместили наш код, который имел дело с WebConfigModification, из функций области действия нашего семейства сайтов в нашу новую функцию области действия веб-приложения.

Это было то, как это должно было быть сделано все время (и как мы пытались сделать это изначально некоторое время назад), но установщик решения SharePoint не поддерживал нашу архитектуру функций, поэтому мы обошли его, добавив немного кода, пытающегося справиться с WebConfigModification на уровне семейства сайтов. Это имело некоторые грубые побочные эффекты, такие как требование, чтобы учетная запись, которая активировала функцию семейства веб-сайтов, также была администратором фермы - и у нас должен был быть некоторый умный код, чтобы не применять или удалять наши настройки несколько раз.

Поэтому для этого нам пришлось обновить установщик решений SharePoint, а также заставить его работать в SharePoint 2010. Он еще не выпущен, но посмотрите http://sharepointinstaller.codeplex.com/ для выпусков, которые поддерживают этот сценарий как для SharePoint 2007, так и для SharePoint 2010.

person Kirk Liemohn    schedule 28.06.2010