SharePoint 2010 : Adding Nested web.config entries using the SPWebConfigModification

In SharePoint 2010, you can’t change the correctly the web.config modification entries because we got a new security feature called “RemoteAdministraorAccessDenied” which is by default set to true.

While creating the nested the entries in the web.config I faced two issues :-

Firstly, I resolved it using the setting the RemoteAdministratorAccessDenied to false.

    1: SPWebService webservice = SPWebService.ContentService;
    2: webservice.RemoteAdministratorAccessDenied = false;
    3:  
    4: webservice.Update();
    5: Console.WriteLine("Navdeep Done");

Secondly, I have written the following code in which I selected “EnsureChildNode” rather using the “EnsureSection” in the modification type.

For e.g. if you would like to add a new section group in the ConfigSection, you have to add the Section group first then you have to provide the XPath to the ParentNode which “configuration/configSections/sectionGroup[@name='CustomURLRewrite']” in my case to add a nested node in the web.config.

 

    1: SPWebApplication webApp = new SPSite("https://blre3r08-12b:7000/Pages/default.aspx").WebApplication;
    2:  
    3: SPWebConfigModification modification = new SPWebConfigModification("CustomURLRewrite", "configuration/configSections");
    4:  modification.Owner = "SimpleSampleUniqueOwnerValue";
    5:  modification.Sequence = 0;
    6:  modification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
    7:  modification.Value = "<sectionGroup name='CustomURLRewrite'></sectionGroup>";
    8:  
    9:  // Add my new web.config modification. 
   10:  webApp.WebConfigModifications.Add(modification);
   11:  
   12:  SPWebConfigModification modification1 = new SPWebConfigModification("CustomURLRewrite", "configuration/configSections/sectionGroup[@name='CustomURLRewrite']");
   13:  modification1.Owner = "SimpleSampleUniqueOwnerValue";
   14:  modification1.Sequence = 1;
   15:  modification1.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
   16:  modification1.Value = "<section name='navdeep' type='Microsoft.SharePoint.ApplicationRuntime.SafeControlsConfigurationHandler, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' />";

 

Member name

Description

EnsureChildNode
Specifies that the web.config modification must ensure a child node of the node to which the XPath expression points. Value = 0.

EnsureAttribute
Specifies that the web.config modification must ensure the value of a particular attribute. Value = 1.

EnsureSection

Ensures a singleton node. This node is only written once, even if multiple entities register multiple instances of EnsureSection to ensure a single section. Value = 2.