views:

372

answers:

1

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:

in global.ascx

Route test = new Route("home.aspx", new TestRoutingHandler());
Routes.Add(test);

in Routing handler

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));
}

In web.config under httpModules

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.

A: 

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.

Rex M