I have read all these articles about how to make system.web.routing work but all these articles explains on localhost:port. I can get this working on the local machine, but as soon as I upload the site on the server, the Routing stops working no matter what I do.
First I was trying without any extension (.aspx) but after all efforts I gave up and added the extension, but still it does not work on the server.
Any help is appreciated.
sample:
global.ascx
Route test = new Route("home.aspx", new TestRoutingHandler());
Routes.Add(test);
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string virtualPath = string.Empty;
Route route = (Route)requestContext.RouteData.Route;
virtualPath = "~/Default.aspx";
return (Page)BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page));
}
add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
This is so simple and works on a local machine, but not on the web server.
Verify that the web server is configured to handle all requests with ASP.NET (also called a wildcard handler). If not, it will only serve requests through ASP.NET if the exact requested path corresponds to a physical file on disk and has the .aspx extension. Obviously the Routing concept completely fails the first condition and usually the second.
Phil Haack has a great walkthrough on how to do this in IIS 6.
For IIS 7, you just need to have the correct modules and handlers specified under system.webServer in the web.config.