Customizing an SharePoint 2010 Application Page.
In this example I'm customizing the /_layouts/MWS.aspx, the new meeting workspace page.
These steps can be followed for any of Application Page.
1. Create the custom application page and deploy it into the _layouts folder.
2. Create an IHttpModule to redirect all requests that come to MWS.aspx and redirect them to customMWS.aspx:
class RedirectModule : IHttpModule { public void Dispose(){ } public void Init(HttpApplication context) { // add event handler context.PreRequestHandlerExecute += context_PreRequestHandlerExecute; } void context_PreRequestHandlerExecute(object sender, EventArgs e) { HttpApplication httpApp = sender as HttpApplication; HttpContext context = httpApp.Context; string httpUrl = context.Request.RawUrl.ToString(); //compare our URL and redirect it to custom one if (httpUrl.ToLower().Contains("/_layouts/customMWS.aspx")) { HttpContext.Current.Server.ClearError(); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Redirect(Regex.Replace(httpUrl, "/_layouts/newMWS.aspx", "/_layouts/customMWS.aspx", RegexOptions.IgnoreCase)); } } }
3. Add a new element in the web.config configuration/system.webServer/modules section to enable this IHttpModule. To do this create an web application feature to add this change in the web.config of the application.
public class MWSRedirectModuleFeature : SPFeatureReceiver { SPWebConfigModification webConfigModification = new SPWebConfigModification { Name = "add[@name='MWSRedirectModule']", Path = "configuration/system.webServer/modules", Owner = "CustomOwner", Sequence = 100, Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode, Value = "Class Name, Assembly Full Name"/>" }; // Add config changes public override void FeatureActivated(SPFeatureReceiverProperties properties) { SPWebApplication parent = (SPWebApplication)properties.Feature.Parent; if (parent == null) return; try { parent.WebConfigModifications.Add(webConfigModification); parent.Update(true); parent.WebService.ApplyWebConfigModifications(); } catch (Exception exception) { // log error } } // Remove config changes public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { SPWebApplication parent = (SPWebApplication)properties.Feature.Parent; if (parent == null) return; try { parent.WebConfigModifications.Remove(webConfigModification); parent.Update(true); parent.WebService.ApplyWebConfigModifications(); } catch (Exception exception) { // log error } } }
Comments