Configuring IIS 7 & ASP.NET App for URL Routing

10,460

Solution 1

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.

Solution 2

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

Share:
10,460
Reaksmey
Author by

Reaksmey

With over a decade of experience working in web and desktop technologies, Jesse specializes in the Microsoft stack, including a proficiency with Microsoft Visual Studio, .NET Framework, and a focus on responsive web applications using Microsoft ASP.NET and modern front-end frameworks, including Angular, React, and Vue.js.

Updated on June 04, 2022

Comments

  • Reaksmey
    Reaksmey almost 2 years

    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:

    • mydomain.ca/routeapp: Folder in your Hosting Space (domain.ca\wwwroot\routeapp)
    • Allow Anonymous Access: On.
    • Enable Integrated Windows Authentication: On.
    • Enable Basic Authentication: On.
    • ASP: Disabled.
    • ASP.NET: 2.0 Integrated Pipeline.
    • PHP: Disabled.
    • Perl: Enabled.
  • Reaksmey
    Reaksmey about 14 years
    I didn't include that in my OP because I didn't know it was relevant. Yet, it is already included in my web.config file.
  • Reaksmey
    Reaksmey about 14 years
    It seems I'm not destined to get routing working with WebForms. I've ported my project over to MVC and am having much less trouble. In the name of closing this thread, I'm assigning this as the accepted answer.