There are many ways to create a complete URL Mapping solution. But most of the serious URL Mapping code, utilizes something a little more advanced than the urlMapping node in Web.Config. The next level up from my previous post, needs to take you into the world of HTTP Handlers. I did not have all the time in the world on this post, so I have decided to put some simple elements of the solution, rather than a complete tutorial. I trust using any keywords from here, you will find lots of other resources. This post will just simply look at a small example of the IHttpHandlerFactory interface and the Web.Config settings. What you need to do: 1. Implement the IHttpHandlerFactory 2. Configure Web.Config with your handler The Interface
public class DefaultPageHandler : IHttpHandlerFactory { public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated) { } public void ReleaseHandler(IHttpHandler handler) { } }
The Web.Config
<httpHandlers> <remove verb="POST,GET" path="*.ext"/> <add verb="POST,GET" path="*.ext" type="DefaultPageHandler"/> </httpHandlers>
Web.Config Dynamic update? A good solution can map these up itself. Here is how you dynamically add a handler section to the Web.Config. Dynamically adding this is useful for mapping extensions, and perhaps even paths dynamically. Below is sample code:
#region write to web.config Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); HttpHandlersSection section = (HttpHandlersSection)config.GetSection("system.web/httpHandlers"); HttpHandlerAction actionAdd = new HttpHandlerAction("/*.ext","DefaultPageHandler","POST,GET"); section.Handlers.Add(actionAdd); config.Save(); #endregion