Więc staram się wdrożyć funkcję aplikację internetową, która aktualizuje web.config przy użyciu kolekcji WebConfigModifications. Jest wiele informacji o tym w ten sposób wszystkich problemów napotkasz więc jestem bardzo pewny siebie w kodzie ale bez względu na to, co staram elementy konfiguracyjne nie są dodawane do config internetowej. Działa to dobrze w jednolitym środowisku serwera rozwoju, ale nie aktualizuje w gospodarstwie.
Brak błędy, brak informacji dziennika żadne komunikaty o zdarzeniach .... nic nie wskazując, dlaczego nie będzie aktualizować:
SPWebConfigModification appSettingModification = nowy SPWebConfigModification ();
appSettingModification.Name = add [@key = \ klucz \ ] [@ value = \ Wartość \ ];
appSettingModification.Path = konfiguracja / appSettings;
appSettingModification.Owner = Właściciel;
appSettingModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
appSettingModification.Value = __appSettingResource;
if (removeModification)
{
app.WebConfigModifications.Remove (appSettingModification);
}
Else
{
app.WebConfigModifications.Add (appSettingModification);
}
App.Update ();
app.Farm.Services.GetValue <SPWebService> ().
==============================
EDYTOWAĆ
Chciałem dodać do tego na podstawie sugestii przez Drax odzwierciedlać sposób ApplyWebModifications. Metoda ta jest na SPWebService który znajduje się w przestrzeni nazw Microsoft.SharePoint.Administration w zespole Microsoft.SharePoint.
Jednym z problemów związanych z zastosowaniem tej metody jest to, że wszystkie pliki web.config są aktualizowane w gospodarstwie, nawet jeśli żadne modyfikacje są rzeczywiście stosowane. To powoduje, że pule aplikacji mogą być odzyskane nawet jeśli nie zamierzają zaktualizować config internetowej. Odbicie pokazuje, dlaczego tak się dzieje i to jest bardzo denerwujące.
Wewnątrz metody jest krótka pętla foreach:
foreach (zgłoszenie SPWebApplication w this.WebApplications)
{
application.ApplyWebConfigModifications ();
}
Jest zapętlenie przez każdą z aplikacji internetowych i wywołanie WEWNĘTRZNE metodę ApplyWebConfigModifications na obiektach aplikacji internetowych. Jeśli po prostu popełnił ten Metoda publiczna wtedy bylibyśmy w stanie wywołać metodę indywidualnie bez wpływu na recykling aplikacja basenie w aplikacjach internetowych, które nie są dotknięte przez nasze aktualizacji. Tylko mówię'