Adding HTTPHandler using SPWebConfigModification

I use the following code to add multiple httpHandlers (for Telerik controls) through the following code.

            SPWebConfigModification webConfig = null;

            webConfig = new SPWebConfigModification();
            webConfig.Owner = featureID;
            webConfig.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
            webConfig.Path = "/configuration/system.web/httpHandlers";
            webConfig.Name = "add[@path='Telerik.ReportViewer.axd']";
            webConfig.Value = "<add verb=\"*\" path=\"Telerik.ReportViewer.axd\" type = \"Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms, Version=4.2.10.1110, Culture=neutral, PublicKeyToken=a9d7983dfcc261be\" />";
            webApp.WebConfigModifications.Add(webConfig);

            webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
            webApp.Update();

            webConfig = new SPWebConfigModification();
            webConfig.Owner = featureID;
            webConfig.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
            webConfig.Path = "/configuration/system.web/httpHandlers";
            webConfig.Name = "add[@path='ChartImage.axd']";
            webConfig.Value = "<add path=\"ChartImage.axd\" verb=\"*\" type=\"Telerik.Web.UI.ChartHttpHandler, Telerik.Web.UI, Version=2010.2.826.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4\" validate=\"false\" />";
            webApp.WebConfigModifications.Add(webConfig);

            webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
            webApp.Update();

            webConfig = new SPWebConfigModification();
            webConfig.Owner = featureID;
            webConfig.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
            webConfig.Path = "/configuration/system.web/httpHandlers";
            webConfig.Name = "add[@path='Telerik.Web.UI.WebResource.axd']";
            webConfig.Value = "<add path=\"Telerik.Web.UI.WebResource.axd\" verb=\"*\" type=\"Telerik.Web.UI.WebResource, Telerik.Web.UI, Version=2010.2.826.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4\" validate=\"false\"/>";
            webApp.WebConfigModifications.Add(webConfig);

            webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
            webApp.Update();

            webConfig = new SPWebConfigModification();
            webConfig.Owner = featureID;
            webConfig.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
            webConfig.Path = "/configuration/system.web/httpHandlers";
            webConfig.Name = "remove[@path='Telerik.ReportViewer.axd']";
            webConfig.Value = "<add verb=\"*\" path=\"Telerik.ReportViewer.axd\" type = \"Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms, Version=4.2.10.1110, Culture=neutral, PublicKeyToken=a9d7983dfcc261be\" />";
            webApp.WebConfigModifications.Add(webConfig);

            webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
            webApp.Update();

            webConfig = new SPWebConfigModification();
            webConfig.Owner = featureID;
            webConfig.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
            webConfig.Path = "/configuration/system.web/httpHandlers";
            webConfig.Name = "remove[@path='Telerik.ReportViewer.axd_*']";
            webConfig.Value = "<add name=\"Telerik.ReportViewer.axd_*\" path=\"Telerik.ReportViewer.axd\" verb=\"*\" type=\"Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms, Version=4.2.10.1110, Culture=neutral, PublicKeyToken=a9d7983dfcc261be\" preCondition=\"integratedMode,runtimeVersionv2.0\" />";
            webApp.WebConfigModifications.Add(webConfig);

            webApp.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
            webApp.Update();

But I get an error like

'' is an invalid expression.

This is not very detailed. Any ideas?

+3
source share
1 answer

Okie, I fixed it. The error appeared on the line ApplyWebConfigModifcations(). It contained some previous erroneous web.config change entries. Call

webApp.WebConfigModifications.Clear()

fixed problem.

0
source

Source: https://habr.com/ru/post/1790474/


All Articles