Wednesday, February 16, 2011

ASP.NET MVC 3 Extensionless URLs on IIS 7 classic mode

Prior ASP.NET 4.0, the only way to handle extensionless URLs was setting runAllManagedModulesForAllRequests=”true” (IIS 7 integrated mode) or mapping a wildcard (IIS 6 and IIS 7 in classic mode). That impacts the performance of static requests (HTML, JPG, GIF, CSS, JS, etc), because a all requests are handled by ASP.NET and runs application pipeline with all attached modules.

ASP.NET v4.0 provides a better way to enable extensionless URLs routing.
There is a new feature that allows extensionless URLs to be directed into managed code, without a wildcard mapping or setting runAllManagedModulesForAllRequests=”true”.
Because of this feature all static resources requests are not longer handled by ASP.NET, and consequentially, they are no longer suffered by performance impact.

It works by default on IIS 6. You may read more about this feature on IIS 6 here .

But IIS 7 surprises a lot! It does not support this feature by default, and I spend an hours to find solution.

The solution is called IIS 7 QFE and steps to download it can be found at http://support.microsoft.com/kb/980368.

I don't know why they did not supply this with .NET 4 installation, they know it better.