ASP.NET MVC 3 Extension less URLs on IIS 6

The part that makes it easier has nothing to do with ASP.NET MVC 3 and everything to do with a little known new feature of ASP.NET 4 creatively called the ASP.NET 4 Extensionless URL feature. ASP.NET MVC 3 requires ASP.NET 4 so it naturally benefits from this new feature.\r\n\r\n\r\nIf you have a server running IIS 6, ASP.NET 4, and ASP.NET MVC 3 (or even ASP.NET MVC 2), your website should just work with the default extensionless URLs generated by ASP.NET MVC applications. No need to configure wildcard mappings nor *.mvc mappings. In fact, you don’t even need to set RAMMFAR to true. RAMMFAR is our pet name for the runAllManagedModulesForAllRequests setting within thesystem.webserver setting in web.config. You can feel free to set this to false.\r\n\r\n


\r\nWhen installing ASP.NET 4, this is enabled by default. So if you have a hosting provider still using IIS 6, but does have ASP.NET 4 installed, then this should work for you.\r\n\r\n\r\nHow does this work?\r\n\r\n

Here is how the v4.0 ASP.NET extensionless URL features works on IIS 6.  We have an ISAPI Filter named aspnet_filter.dll that appends “/eurl.axd/GUID” to extensionless URLs.  This happens early on in the request processing.  We also have a script mapping so that “*.axd” requests are handled by our ISAPI, aspnet_isapi.dll.  When we append “/eurl.axd/GUID” to extensionless URLs, it causes them to be mapped to our aspnet_isapi.dll, as long as the script map exists as expected.  These requests then enter ASP.NET where we remove “/eurl.axd/GUID” from the URL, that is, we restore the original URL.  The restoration of the original URL happens very early.  Now the URL is extensionless again and if no further changes are made\r\n

\r\nHe also has a list of conditions that must be true for this feature to work. If any one of them is false, then you’re back to the old extensionfull URLs with IIS 6.\r\n\r\n\r\nI’m Getting a 403 Forbidden\r\n\r\n\r\nThis is not technically related, but if you face 403 Forbidden error message. Here is how to fix it.\r\n\r\n\r\nIn IIS Manager, right clicked on the Web Services Extension node and selected the menu option labeled Allow all Web Service extensions for a specific application:\r\n\r\n\r\n\r\n\r\n\r\nIn the resulting dialog, select the ASP.NET v4.0.30319 option.\r\n\r\n\r\n\r\n\r\n\r\nTo double check that everything was configured correctly, look at the properties for my website and ensured that Scripts were enabled.\r\n\r\n\r\n\r\n\r\n\r\nAlso click on the Configuration… button and made sure that *.axd was mapped to the proper ASP.NET ISAPI DLL (aspnet_isapi.dll).\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nWith all that in place, able to run standard ASP.NET MVC web application and make requests for /, /home/about/, etc. without any problems!\r\n

One thought on “ASP.NET MVC 3 Extension less URLs on IIS 6”

  1. Pingback: sSysAdmin blog

Comments are closed.