Отображение классических ASP-страниц в.net в IIS

Я пытаюсь отобразить запросы на классические страницы asp, которые будут обрабатываться.net, чтобы он выполнялся через пользовательский httpmodule.

В IIS я переназначил запросы asp в aspnet_isapi.dll - я уверен, что все сделал правильно

Теперь в моем тестовом приложении я получаю эту ошибку:

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

Поиск в Интернете этой ошибки показывает массу людей, имеющих проблемы с cassini, но это не очень актуально, я тестирую это как на IIS 5.1 на компьютере с XP, так и на IIS6, также получая ту же ошибку.

Я следовал инструкциям по добавлению и регистрации httphandler (см. Http://support.microsoft.com/default.aspx?scid=kb;en-us;Q308001), но я не знаю, что добавить в процедуру ProcessRequest чтобы запрос был передан. Что такое http. По умолчанию.net httphandler, могу ли я просто сопоставить это в web.config?: так что-то вроде:

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

Как мне сказать asp.net, что он должен передавать запросы ASP, а не блокировать?

3 ответа

На самом деле вы только один шаг далеко от успеха. Добавление следующего раздела в файл web.config вашего локального сайта (или виртуального каталога):

<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>

Похоже, .asp расширение отображается на HttpForbiddenHandler,

Если вы используете ASP.NET 1.1, откройте следующий файл:

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config

Если вы используете ASP.NET 2.0, откройте этот файл:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config

Ищи " path="*.asp" ", затем закомментируйте эту строку.

<!-- machine.config/ASP.NET 1.1-->
<add path="*.asp" verb="*" 
     type="System.Web.HttpForbiddenHandler"/>`

<!-- web.config/ASP.NET 2.0-->
<add path="*.asp" verb="*" 
     type="System.Web.HttpForbiddenHandler" validate="true"/>`

Найдите файл ниже:

C:\WINDOWS\MICROSOFT.NET\FRAMEWORK\<FramworkVersion>\Config\web.config

где <FramworkVersion> это имя папки:

откройте его в редакторе XML.. (даже блокнот в порядке)

и добавьте строку ниже:

<add path="*.asp" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True"/>

под ниже XPath:

configuration/system.web/httpHandlers

заменить существующий!

Добавьте ниже строки:

<add extension=".asp" type="System.Web.Compilation.PageBuildProvider"/>

под ниже XPath:

/configuration/system.web/compilation/buildProviders

Работал как драгоценный камень для меня:)

Другие вопросы по тегам