Search code examples
c#asp.netiisasp.net-web-api

Web API On IIS 10 (Handler "ExtensionlessUrlHandler-Integrated-4.0" has a bad module "ManagedPipelineHandler")


I built a basic RESTful web service so that I can receive events. I can run this fine on local IIS, but have the following error when publishing it in IIS 10 on a server

HTTP Error 500.21 - Internal Server Error Handler "ExtensionlessUrlHandler-Integrated-4.0" has a bad module "ManagedPipelineHandler"

I set the application pool Managed Pipeline Mode to Integrated and enabled Directory Browsing in the app features. My web config looks like this:

<system.webServer>
<modules>
  <remove name="UrlRoutingModule-4.0" />
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
<handlers>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

If I change the application pool Managed Pipeline Mode to "Classic" I can actually see the root site but trying to browse or call to the API gives 404s (such as xx.x.xxx.x/api/Controller/Action).


Solution

  • Using IIS 10 and .NET 4.6

    1. Add roles and Features
    2. Open up child nodes for WEB Server IIS
    3. Under Web Server, open nodes for Application Development
    4. Select ".NET Extensibility 4.6", "ASP.NET 4.6"

    These resolves the problem.