Jesse Hallam
Jesse Hallam

Reputation: 6964

Configuring IIS 7 & ASP.NET App for URL Routing

This is not an MVC topic. I have an ASP.NET Application which performs URL Routing in the Application_Start method.

The routing looks like:

RouteTable.Routes.Add(new Route(
  "Profile/{query}",
  new RouteValueDictionary() { {"query",string.Empty} },
  new GenericRouteHandler("~/ProfileHttpHandler.ashx")
));

A GenericRouteHandler looks implements GetHttpHandler with:

var page= (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(_virtualPath, typeof(IHttpHandler));
...
return page;

And ProfileHttpHandler.ashx is just a Visual Studio template. It sets Content-type to "text/plain" and writes "hello world."

This application works correctly while debugging in Visual Studio (on the ASP.NET development server). A GET http://localhost:59474/Profile/abc123 routes to the http handler as expected.

However, when this app is published to a remote machine running IIS 7 in Integrated Pipeline mode, the process fails. I get HTTP 500 errors when attempting to GET anything inside the apps folder, including Default.aspx.

Web.Config is configured as such:

<system.web>
  <httpModules>
    <add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </httpModules>
</system.web>
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </modules>
</system.webServer>

Lastly; I'm unsure whether this is relevant information. In my web service provider's control panel, I have the directory which this application resides in configured as a virtual directory. It has the properties:

Upvotes: 3

Views: 10979

Answers (2)

ayush
ayush

Reputation: 11

To configure an ASP.NET Web site or Web application for routing, you first need to add a reference to the System.Web.Routing assembly.The SP1 installation for the .NET Framework 3.5 will install this assembly into the global assembly cache, and you can find the assembly inside the standard "Add Reference" dialog box.

Check this link

Upvotes: 1

Branislav Abadjimarinov
Branislav Abadjimarinov

Reputation: 5131

You can try to add this to your web.config file

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
</system.webServer>

For more information on this check the iis forum thread.

Upvotes: 2

Related Questions