2013-08-07 2 views
1

У меня есть функция в Sharepoint 2010, которая добавляет SPWebConfigModification на сайт sharepoint. Он добавляет ключ к разделу AppSettingsПовторяющиеся значения при активации функции Sharepoint

активации Характеристика Код выглядит следующим образом:

private static void ActivateWebConfigModifications(SPWebApplication webApplication) 
    { 
     webApplication.WebConfigModifications.Add(GetConfigMod()); 

     webApplication.Update(); 
     webApplication.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications(); 
    } 

Код объекта деактивация выглядит следующим образом:

private static void DeactivateWebConfigModifications(SPWebApplication webApplication) 
    { 
     Collection<SPWebConfigModification> modifications = webApplication.WebConfigModifications; 

     foreach (SPWebConfigModification mod in modifications) 
     { 
      if (mod.Owner == GetConfigMod().Owner) 
      { 
       modifications.Remove(mod); 
      } 
     } 

     webApplication.Update(); 
     webApplication.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications(); 
    } 

Проблема и последовательность событий.

1) Разверните решение wsp с функцией. Успех

2) Изучите файл WebConfig для правильной записи об установке. appSettings правильно

3) Взять и удалить решение wsp. Отвод и удалить успех

4) Изменить значение WebConfigModification в художественном коде

5) Deploy ПБВ с функцией, содержащей новое значение. Успешность

6) Изучите файл WebConfig для правильной записи об установке. Запись appSettings содержит новое значение.

7) В центральном администраторе отключите функцию. Успех

8) Активировать функцию. Успешность

9) Изучите файл WebConfig для правильной записи об установке. Запись appSettings содержит значение OLD.

Почему старое значение сохраняется?

При рассмотрении WebConfigModifications с помощью PowerShell Я считаю, что старое значение присутствует в коллекции, когда следующий код запускается в Powershell:

Add-PSSnapin Microsoft.SharePoint.PowerShell 
$w = Get-SPWebApplication -Identity http://SiteUrl 
$w.WebConfigModifications 

Есть идеи?

ответ

0

Это похоже на проблему кэширования, PowerShell кэширует множество объектов SharePoint, включая шаблоны сайтов. Он также не перезагружает обновленные dll в GAC. То, что я обычно делаю после развертывания wsp, закрывает все окна PowerShell и перезапускает iis и owstimer.

+0

Блок кода powershell выше перенастраивает объект $ w и показывает состояние веб-приложения в момент вызова Get-SPWebApplication. Я запустил этот блок кода между этапами развертывания и активации функции, и он возвращает ожидаемое. Извините, человек, который сказал, что я использую powershell, чтобы подтвердить, что находится в БД контента в это время – Xariex

Смежные вопросы