Mapping classic asp pages to .net in IIS

DannykPowell picture DannykPowell · Oct 15, 2009 · Viewed 15k times · Source

I'm trying to map requests for classic asp pages to be handled by .net, so that it runs through a custom httpmodule.

In IIS I have remapped asp requests to aspnet_isapi.dll - I'm sure I've done this bit right

Now in my test app I am getting this error:

Server Error in '/TestASPRedirect' Application.
--------------------------------------------------------------------------------

This type of page is not served. 
Description: The type of page you have requested is not served because it has been explicitly forbidden.  The extension '.asp' may be incorrect.   Please review the URL below and make sure that it is spelled correctly. 

Requested URL: /testaspredirect/test.asp

Searching online for this error shows a load of people having problems with cassini, but this is not really relevant, I am testing this on both IIS 5.1 on XP dev machine, and have tested on IIS6 also getting the same error.

I have followed instructions for adding and registering a httphandler (see http://support.microsoft.com/default.aspx?scid=kb;en-us;Q308001), but I don't know what to put in the ProcessRequest routine to ensure the request gets passed on. What is the default .net httphandler, can I just map to this in web.config?: so something like:

<httpHandlers>
     <add verb="*" path="*.asp" type="standard.nethttphandler"/>
</httpHandlers>

How do I tell asp.net that it needs to pass ASP requests on and not block?

Answer

user210851 picture user210851 · Nov 14, 2009

Actually you are only one step far from the success. Adding following section to your Local website(or virtual directory) web.config file:

<configuration>
...
<system.web>
    <compilation>
        <buildProviders>
            <add extension=".asp" type="System.Web.Compilation.PageBuildProvider"/>
        </buildProviders>
    </compilation>
    <httpHandlers>
        <add path="*.asp" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/>
    </httpHandlers>
</system.web>