0 out of 1 rated this helpful Rate this topic

SPWebConfigModification Class

Holds modifications that are made to the web.config.

System.Object
  Microsoft.SharePoint.Administration.SPAutoSerializingObject
    Microsoft.SharePoint.Administration.SPWebConfigModification

Namespace:  Microsoft.SharePoint.Administration
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Available in Sandboxed Solutions: No
[GuidAttribute("2BE8CC87-138D-4A5F-96A7-A842D6364FA4")]
[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
public sealed class SPWebConfigModification : SPAutoSerializingObject

A collection of web.config modifications is a set of commands that, when processed by the web.config manipulator in Microsoft SharePoint Foundation, change the state of the web.config file. You can string together a set of these commands to ensure that they apply the desired tags and attributes within web.config. Each modification is expressed as an object in the administrative object model.

Use the WebConfigModifications property of the SPWebApplication or SPWebService class to get the collection of web.config modifications either in the Web application or in all Web applications within the Web service. To apply modifications that you define through the SPWebConfigModification class to the web.config files in the server farm, call the ApplyWebConfigModifications method on the current content Web service object, as follows: SPWebService.ContentService.ApplyWebConfigModifications

The following example adds a safe control entry to the safe controls section in web.config throughout the server farm.

SPWebService myService = SPWebService.ContentService;

SPWebConfigModification myModification = new SPWebConfigModification();
myModification.Path = "configuration/SharePoint/SafeControls";
myModification.Name = "SafeControl[@Assembly='MyCustomAssembly'][@Namespace='MyCustomNamespace'][@TypeName='*'][@Safe='True']";
myModification.Sequence = 0;
myModification.Owner = WebConfigModificationFeatureReceiver.OwnerId;
myModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
myModification.Value = "<SafeControl Assembly='MyCustomAssembly' Namespace='MyCustomNamespace' TypeName='*' Safe='True' />";

myService.WebConfigModifications.Add(myModification);
myService.Update(); 
myService.ApplyWebConfigModifications();
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(2000 characters remaining)
Community Content Add
Annotations FAQ
Easy to use wrapper class here
See http://kli.dk/2010/12/10/sharepoint-web-config-modifications/ for a safe implementation on how to merge your own app.config file into SharePoint with a few code lines. Also supports automatic removing.
Interesting additional MSDN content
Here is some more information regarding SPWebConfigModification class and code examples for adding and removing. More information: How to: Add and Remove Virtual Web.config Settings, http://msdn.microsoft.com/en-us/library/bb861909(v=office.14).aspx. 

An alternative is creating a webconfig.myName.xml in de 12/CONFIG folder. These actions will be merged to all web applications in the farm. Manually pushing the actions is done by using stsadm.exe -o copyappbincontent. More information: How to: Create a Supplemental .config File, http://msdn.microsoft.com/en-us/library/ms439965.aspx.
Still very dangerous to use
@spyhunter73 No, it hasn't. It is still prone to destroy your web.config. For example, on my setup if completely kills the configSections section when I retract a feature, most likely due to some stale cache/config.
Has this been updated from 2007?
The 2007 SPWebConfigModification is a high risk class to use for web parts that require custom configuration settings, such as WCF connection information. The 2007 was nortorously easy to break and was very buggy when used within a feature reciever. Usage from outside of the SharePoint context was strangely more reliable. 

Has this been updated at all for 2010 version?