1: public SPWebConfigModification createModification(String paramName, String value, String ownerID)
2: {
3: SPWebConfigModification modification = new SPWebConfigModification("add[@key='" + paramName + "']", "configuration/appSettings");
4: modification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
5: modification.Value = "<add key=\"" + paramName + "\" value=\"" + value + "\" />";
6: modification.Sequence = 0;
7: modification.Owner = ownerID;
8: return modification;
9: }
10:
11: public override void FeatureActivated(SPFeatureReceiverProperties properties)
12: {
13: SPWebApplication webApp = SPContext.Current.Site.WebApplication;
14: // Ripulisco le modifiche precedenti se presenti
15: webApp.WebConfigModifications.Clear();
16: // Per sezioni che includono altri figli devo usare EnsureSection.
17: // questo fa si che la sezione venga creata se non esistente
18: SPWebConfigModification modification = new SPWebConfigModification("appSettings", "configuration");
19: modification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureSection;
20: modification.Value = "appSettings";
21: modification.Sequence = 0;
22: // In questo caso il Guid è settato ad un valore casuale in modo che la sezione non
23: // sarà rimossa in fase di disinstallazione potendo essere usata da altre applicazioni
24: modification.Owner = Guid.NewGuid().ToString();
25: // Aggiungo le modifiche
26: webApp.WebConfigModifications.Add(modification);
27:
28: // Aggiungo un parametro
29: webApp.WebConfigModifications.Add(createModification("Param1","Value1", properties.Feature.DefinitionId.ToString()));
30:
31: // Salvo le modifiche sul web.config
32: webApp.Update();
33: webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
34: }