none
Программное изменение web.config. SharePoint 2013. RRS feed

  • Общие обсуждения

  • Задача простая, но примера найти не могу. Необходимо заменить в конкретном теге значение его параметра на другое. Итак.. причина в ошибке при попытке деактивировать компоненту. Дело в том, что проект развернут на новом сервере, соответственно с новым экземпляром SP на нем. И одна Feature не дает себя деактивировать как положено.

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

    Сведения: Для разрешения просмотра сведений данного сообщения об ошибке на локальном сервере создайте тег <customErrors> в файле конфигурации "web.config", который ....

    ..и рекомендует изменять параметр mode в теге customErrors.

    Я пробовал напрямую менять содержимое web.config с перезапуском iis - не помогает. Файл из папки C:\inetpub\wwwroot\wss\VirtualDirectories\44096 - если правильно понимаю, это конфигурация приложения. Ничего не изменилось.

    Хочу попробовать изменить программно с использованием SPWebConfigModification. Но проблема в заполнении свойств Name, Path, ну и Value, наверное тоже. Помогите, не соображу, какими они должны быть в этом случае?

    Ветка:

    <configuration>
        <system.web>
            <customErrors mode="RemoteOnly"/>
        </system.web>
    </configuration>

    Необходимо заполнить объект SPWebConfigModification для изменения параметра mode тега customErrors. Тег и параметр уже присутствуют в файле.

    12 декабря 2016 г. 10:31

Все ответы

  • Задача простая, но примера найти не могу. Необходимо заменить в конкретном теге значение его параметра на другое. Итак.. причина в ошибке при попытке деактивировать компоненту. Дело в том, что проект развернут на новом сервере, соответственно с новым экземпляром SP на нем. И одна Feature не дает себя деактивировать как положено.

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

    Сведения: Для разрешения просмотра сведений данного сообщения об ошибке на локальном сервере создайте тег <customErrors> в файле конфигурации "web.config", который ....

    ..и рекомендует изменять параметр mode в теге customErrors.

    Я пробовал напрямую менять содержимое web.config с перезапуском iis - не помогает. Файл из папки C:\inetpub\wwwroot\wss\VirtualDirectories\44096 - если правильно понимаю, это конфигурация приложения. Ничего не изменилось.

    Хочу попробовать изменить программно с использованием SPWebConfigModification. Но проблема в заполнении свойств Name, Path, ну и Value, наверное тоже. Помогите, не соображу, какими они должны быть в этом случае?

    Ветка:

    <configuration>
        <system.web>
            <customErrors mode="RemoteOnly"/>
        </system.web>
    </configuration>

    Необходимо заполнить объект SPWebConfigModification для изменения параметра mode тега customErrors. Тег и параметр уже присутствуют в файле.

    Посмотрите здесь.
    12 декабря 2016 г. 11:35
  • Майк, статья путает еще больше :)))

    1. Как определить порт приложения. В папке VirtualDirectories у меня две папки: 80 и 44096. Насколько я понимаю, 44096 - это папка локализации на русском языке. Так ли это? И в какой из этих папок править web.config.

    Если мы откроем Центр Администрирования в разделе веб-приложений, то увидим там только Sharepoint-80 (порт 80) и Sharepoint Central Administration (порт 777).

    Поэтому вопрос какая папка - 80 или 44096?

    2. Как я понял из той темы - web.config из папки 15\TEMPLATE\LAYOUTS\ имеет область действия только на файлы из этой папки? Он работает динамически, при открытии страниц, которые там лежат? Это больше для расширения кругозора, вдруг пригодится.

    12 декабря 2016 г. 12:18
  • И хотелось бы вернуться к программному изменению web.config. Если честно - не получается.

    Дано: виртуальная машина WServer 2012 R2 Standart, на которой работает SP Foundation 2013.

    Надо: программным образом изменить содержимое конфигурации приложения. Конкретно - изменить ветку

    <configuration>
        <system.web>
            <customErrors mode="RemoteOnly"/>
        </system.web>
    </configuration>

    Реализация:

    1. Создаю компоненту (Feature) уровня WebApplication. Компонента пустая, но имеет обработчики FeatureActivated() и FeatureDeactivating().

    Привожу все к первоначальному виду, стараюсь по крайней мере: -Retract() - ОК, -вычищаю фичу через PShell, т.к. она остается после ошибки - ее нигде не видно, но она присутствует с пустым scope и не дает установить себя повторно. Сказал А, говорю Б - ссылка на полезную статью: http://sharepoint.stackexchange.com/questions/16525/how-to-remove-orphaned-features.

    Далее, вычищаю кэш браузера (да, паранойя), перезапускаю IIS, перезагружаю студию. Открываю студию и Центр администрирования.

    Ребилд решения. Проверяем фичу: scope = WebApplication, ActivateOnDefault = false, больше ничего в свойствах не трогал. Проверяем обработчики:

    public override void FeatureActivated(SPFeatureReceiverProperties properties)
            {
                SPWeb web = properties.Feature.Parent as SPWeb;
                if (web == null)
                {
                    web = (properties.Feature.Parent as SPSite).RootWeb;
                }

                SPWebApplication webApp = web.Site.WebApplication;

                //SPDiagnosticsService. Local.WriteTrace(0, new SPDiagnosticsCategory("pv.Message", TraceSeverity.Unexpected, EventSeverity.Information),
                //    TraceSeverity.Unexpected, "Веб-приложение: " + webApp.Name, "");

                //SPWebConfigModification mod = new SPWebConfigModification();

                //// обеспечиваем наличие тега system.web:
                //AddWebConfigModification(webApp, @"configuration", @"system.web", 0, @"<system.web></system.web>");
                //// изменяет параметр mmode для тега customErrors:
                //AddWebConfigModification(webApp, @"configuration/system.web", @"customErrors[@mode='RemoteOnly']", 1, @"<customErrors mode='RemoteOnly'/>");
            }

    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
            { // - в нем все закомментировал.

    В Центре администрирования выбираю приложение SharePoint - 80, выбираю Управление компонентами - удостоверяюсь, что фичи нет.

    Делаю развертку (Deploy) проекта. Без ошибок.

    В Центре администрирования - вижу компоненту. Активирую... получаю ошибку

    К сожалению что-то пошло не так. Ссылка не указывает на экземпляр объекта

    На что ругается? Напомню - уровень WebApplication, наличие ресиверов. Как правильно настроить фичу, может в этом дело?

    12 декабря 2016 г. 14:41
  • Если смотреть журналы, то ULSViewer начинает выброс ошибки с такого сообщения:

    Feature receiver assembly 'pvWebConfigModifications, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0eecba566178806a', class 'pvWebConfigModifications.Features.Feature1.Feature1EventReceiver', method 'FeatureActivated' for feature '6c13f60f-309a-4a45-9da7-712f4671ad2f' threw an exception: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.     в pvWebConfigModifications.Features.Feature1.Feature1EventReceiver.FeatureActivated(SPFeatureReceiverProperties properties)     в Microsoft.SharePoint.SPFeature.DoActivationCallout(Boolean fActivate, Boolean fForce)

    И заканчивает таким:

    Getting Error Message for Exception System.Web.HttpUnhandledException (0x80004005): Выдано исключение типа "System.Web.HttpUnhandledException". ---> System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.     в pvWebConfigModifications.Features.Feature1.Feature1EventReceiver.FeatureActivated(SPFeatureReceiverProperties properties)     в Microsoft.SharePoint.SPFeature.DoActivationCallout(Boolean fActivate, Boolean fForce)     в Microsoft.SharePoint.SPFeature.Activate(SPSite siteParent, SPWeb webParent, SPFeaturePropertyCollection props, SPFeatureActivateFlags activateFlags, Boolean fForce)     в Microsoft.SharePoint.SPAdminFeatureCollection.Add(Guid featid, SPFeatureDefinition featdef, Version version, SPFeaturePropertyCollection props, Boolean fForce)     в Microsoft.SharePoint.SPFeatureCollection.AddInternal(SPFeatureDefinition featdef, Version version, SPFeaturePropertyCollection properties, SPFeatureActivateFlags activateFlags, Boolean force, Boolean fMarkOnly)     в Microsoft.SharePoint.SPFeatureCollection.AddInternalWithName(Guid featureId, Int32 compatibilityLevel, String featureName, Version version, SPFeaturePropertyCollection properties, SPFeatureActivateFlags activateFlags, Boolean force, Boolean fMarkOnly, Boolean fIgnoreMissing, SPFeatureDefinitionScope featdefScope)     в Microsoft.SharePoint.WebControls.FeatureActivator.ActivateFeature(Guid featid, Int32 compatibilityLevel, SPFeatureDefinitionScope featdefScope)     в Microsoft.SharePoint.WebControls.FeatureActivatorItem.ToggleFeatureActivation()     в Microsoft.SharePoint.WebControls.FeatureActivatorItem.BtnActivateFeature_Click(Object objSender, EventArgs evtargs)     в System.Web.UI.WebControls.Button.OnClick(EventArgs e)     в System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)     в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)     в System.Web.UI.Page.HandleError(Exception e)     в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)     в System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)     в System.Web.UI.Page.ProcessRequest()     в System.Web.UI.Page.ProcessRequest(HttpContext context)     в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()     в System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

    С т.з. синтаксиса ошибок в тексте нет. Да и все строки, в которых могут быть какие-то ошибки я уже закомментировал. Вряд ли речь идет о содержимом обработчиков событий.

    Свойства фичи:

    13 декабря 2016 г. 7:53