Thursday 8 September 2011

SPWebConfigModification , SPWebApplication and SPWebService; Modifying the Sharepoint 2010 web.config programmatically

When you work with Sharepoint 2010, sometimes you need to store data like connection strings or sometimes you just need to modify the security or you just need to add a safe control entry… who knows. Basically, I understand that the web.config it is the brain of Sharepoint 2010. This text file is so powerful that by having one character wrong will stop the whole farm, that is why Microsoft designed the SPWebConfigModification class.

This class allows you to modify/add anything in the web.config programmatically specifying the section, type, values etc.

The best way to see how this class works it is with a simple example. We are going to add a safe control entry into the web.config, the section is called <SafeControls>, I attach an image with the location so you can have an idea of what we are going to add.

image

We are going to add a new <SafeControl> section under <SafeControls> with the following code (thanks MSDN):

//## WEBSERVICE MANAGER CONTROLS THE WEB.CONFIG ENTRIES
SPWebService _spWebService= SPWebService.ContentService;
 
//## PROPERTIES
SPWebConfigModification _spWebModification = new SPWebConfigModification();
_spWebModification.Path = "configuration/SharePoint/SafeControls";
_spWebModification.Name = "SafeControl[@Assembly='MyCustomAssembly'][@Namespace='MyCustomNamespace'][@TypeName='*'][@Safe='True']";
_spWebModification.Sequence = 0;
_spWebModification.Owner = WebConfigModificationFeatureReceiver.OwnerId;
_spWebModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
_spWebModification.Value = "<SafeControl Assembly='MyCustomAssembly' Namespace='MyCustomNamespace' TypeName='*' Safe='True' />";
 
//## ADDING THE DATA IN THE WEB.CONFIG
_spWebService.WebConfigModifications.Add(_spWebModification);
 
//## UPDATING THE WEB.CONFIG
_spWebService.Update(); 
_spWebService.ApplyWebConfigModifications();

Probably the best place where to apply this code will be in one of the events in the Feature Receiver, but that is always up to you.


Conclusion: SPWebConfigModification will automatise and make the life easier for Sharepoint Administrators, leaving the messy old school web.config apart. I am sorry but I have never liked the concept of web.config.

No comments: