Skip to main content

SPWebConfigModification

SharePoint offers the SPWebConfigModification class to update web.config entries. We can have a Feature receiver at the Web Application scope and on activation propgate the web config changes to all the WFE servers .. This is good right?
But the caveat is that the class is not so flexible. It does not allow us to reorder the entries within a section which is really important in case of custom Http modules ad handlers. Hope MS takes care of this in the next update ..Hers is a sample code to add the connection strings section and update the enableSessionstate attribute.

SPWebApplication webApp = (SPWebApplication)properties.Feature.Parent;


SPWebConfigModification wcupdate1 = new SPWebConfigModification();
wcupdate1.Owner = "Any Name";
wcupdate1.Name = "enableSessionState";
wcupdate1.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute;
wcupdate1.Path = "configuration/system.web/pages";
wcupdate1.Value = "true";

// This is not required if the ConnectionStrings section has already been created in the web.config
SPWebConfigModification wcupdate3 = new SPWebConfigModification();
wcupdate3.Owner = "Any Name";
wcupdate3.Name = "connectionStrings";
wcupdate3.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
wcupdate3.Path = "configuration";
wcupdate3.Value = "";

string DBConnectionString = Read from a list or feature property (security reasons)
SPWebConfigModification wcupdate4 = new SPWebConfigModification();
wcupdate4.Owner = "Any Name";
wcupdate4.Name = "add[@name='ConnStringName']";
wcupdate4.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
wcupdate4.Path = "configuration/connectionStrings";
wcupdate4.Value = String.Format("", DBConnectionString); ;

webApp.WebConfigModifications.Add(wcupdate1);
webApp.WebConfigModifications.Add(wcupdate3);
webApp.WebConfigModifications.Add(wcupdate4);

webApp.Farm.Services.GetValue().ApplyWebConfigModifications();
webApp.Update();
 
Hope this helps

Comments

Popular posts from this blog

SharePoint Edit Form - Check Unique Values in Fields

You will always come across customers with interesting requirements and we had one. The SharePoint site has a document library in which content was organized within Document sets (i.e documents were created and stored within document sets). One particular field (say Field 1) was shared between the document set and the document to cascade the values. The requirement was to have unique values in Field 1 within the library. We could not set "Enforce unique values" for Field 1 since it will not allow us to share the value of the field with the documents inside the document set. JQuery as usual was the savior. We had to leverage the SPServices functions to achieve what was expected. SPService has a function SPRequireUnique which did not work well for us since it was large document library with more than hunderd thousand documents. SharePoint has a PreSave function which is invoked prior to saving the item in the Database. This is very handy when you need to perform custom v...

Powershell Power

Recently we discovered an issue where the Site Deleting event receiver was being triggered when we migrated teamsites from one content DB to another. This was something we never anticipated since we were just moving sites and not deleting them. We figured out that the event receiver was being triggered since the custom teamsite data was being deleted from the source content DB. So we decided to come up with a powershell script to restore the list and DB table.In my opinion Powershell scripting just rocks. I just want to share some snippets from the code that updates a SharePoint list and DB. $web = $site.RootWeb $web.AllowUnsafeUpdates = $TRUE $teamsitemasterlist = $web.GetList($TeamsiteListName) $newlistitem = $teamsitemasterlist.Items.Add() $newlistitem["Title"] = $teamsiteTitle $newlistitem["Description"] = $teamsiteDescription $newlistitem["Provisioning Status"] = "Provisioned" $newlistitem.Update() $sqlconnection = new-object Sys...