Reputation:
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.
Upvotes: 3
Views: 3272
Reputation: 2711
For IIS7+ i found adding to the web.config's section suddenly made everything work:
<modules runAllManagedModulesForAllRequests="true" />
Confusing as in VS running on the Cassini web server, it worked just fine.
Upvotes: 2
Reputation: 144112
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.
Upvotes: 0