Back here I gave an example of setting up and ASP.NET webforms site to use ASP.NET routing. A few people have still run into trouble trying to get things working so I thought I'd try and boil things down to the bare essentials. This is what's required to get an ASP.NET webforms application routing requests via ASP.NET routing on ASP.NET 3.5 Sp1 using the WebDev WebServer.
Create a new ASP.NET website
Add a reference to System.Web.Routing
Add Global.asax to your website
Import the System.Web.Routing namespace in Global.asax
<%@ Import Namespace="System.Web.Routing" %>
Add code to the Application_Start method eg (in VB)
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) ' Code that runs on application startup Dim rte = New Route("Routes/{ViewName}", New RouteHandler()) RouteTable.Routes.Add(rte) End Sub
Add your RouteHandler class eg
Public Class RouteHandler Implements IRouteHandler Function GetHttpHandler(ByVal requestContext As System.Web.Routing.RequestContext) _ As IHttpHandler Implements IRouteHandler.GetHttpHandler Dim v As New ViewHandler() v.ViewName = requestContext.RouteData.GetRequiredString("ViewName") Return v End Function End Class
Add the URLRoutingModule to the <httpModules> section in web.config eg
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
You're done!
Note that by default, ASP.NET routing gives preference to files that already exist on disk at the specified path - those will be served up without going through the routing mechanism unless you set the property RouteTable.Routes.RouteExistingFiles = True. This forces the routing mechanism to be invoked for existing files as well. To give an example:
Imagine I have a default.aspx file in the root of my website, a route defined with the pattern "{ViewName}" and RouteTable.Routes.RouteExistingFiles is False (the default).
If I make a request for http://mywebsite/default.aspx that will be served up in the "normal" way and the routing mechanism will not be invoked.
If I set RouteTable.Routes.RouteExistingFiles = True, the routing mechanism will be invoked and my RouteHandler will be called. The request will therefore be routed by ASP.NET routing.
If there was no route match for the request (eg imagine my only route pattern was "RouteMe/{ViewName}") then the routing mechanism would be invoked, no route match would be found and the default.aspx file would be served up in the normal way.
PingBack from http://www.tmao.info/getting-aspnet-routing-up-and-running-the-definitive-guide/
Just a quick follow-up to my previous post. To get routing working in a web application project you can
I just made my first, albeit small, contribution to stackoverflow.com . Stack Overflow is a great programming