Отображения обработчика IIS для классического файла ASP включают в себя (.inc) файл - PullRequest
1 голос
/ 08 марта 2019

Я представляю классический сайт ASP новой версии сервера Windows, размещенной в IIS 10.

При загрузке страницы default.asp я обнаружил в инструменте разработчика браузера вкладку сети, в которой говорится, что файл helpers.inc не найден. Но он находится в той же папке, что и страница по умолчанию.

Файл helpers.inc вызывается на странице default.asp следующим кодом:

<script src="helpers.inc" language="VBScript" defer="true"></script>

Если я попытаюсь получить доступ к файлу helpers.inc из браузера, я получу эту ошибку:

HTTP Error 404.3 - Not Found
The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.

Most likely causes:
•It is possible that a handler mapping is missing. By default, the static file handler processes all content.
•The feature you are trying to use may not be installed.
•The appropriate MIME map is not enabled for the Web site or application. (Warning: Do not create a MIME map for content that users should not download, such as .ASPX pages or .config files.)
•If ASP.NET is not installed.

Я попытался добавить сопоставление обработчика для файла * .inc, используя исполняемый файл% windir% \ system32 \ inetsrv \ asp.dll, но он не работает. Дает мне новую ошибку:

HTTP Error 404.17 - Not Found
The requested content appears to be script and will not be served by the static file handler.

Most likely causes:
•The request matched a wildcard mime map. The request is mapped to the static file handler. If there were different pre-conditions, the request will map to a different handler.

Мне интересно, что мне нужно, чтобы файл include (.inc) мог быть распознан / прочитан страницей asp?

Ответы [ 2 ]

2 голосов
/ 09 марта 2019

Если эта строка выглядит так в перенесенном коде (без каких-либо изменений)

<script src="helpers.inc" language="VBScript" defer="true"></script>

, тогда ясно одно.

Этоне является SSI (Включение на стороне сервера) .

Тег определяет файл с расширением .inc как Клиентский VBScript.Однако на данный момент вы не сообщили IIS, что .inc - это тип файла, которому разрешено служить text/vbscript.

Примечание: Наличие на стороне клиентаVBScript, определенный на странице, будет серьезно ограничивать кросс-браузерную совместимость, поскольку VBScript поддерживается только в более старых версиях Internet Explorer .


Почему 404.3?

Причина 404.3 заключается в том, что IIS блокирует неизвестные типы файлов .Чтобы это исправить, вам нужно добавить в IIS отображение типов MIME, которое я бы обычно не рекомендовал, так как .inc иногда используется как расширение для файлов SSI , но поскольку мы опровергли эту теорию отображения MIMEТип - это путь.


Почему это не SSI

Существует только три способа запуска серверного сценария на странице Classic ASP;

  1. Использование тегов процессора

    <%
        ...
    %>
    
  2. Использование тегов сценария с атрибутом runat="server".

    <script language="VBScript" runat="server">
        ...
    </script>
    
  3. ДобавлениеSSI с использованием директивы #include.

    <!-- #include virtual = "somefile.asp" -->
    

Полезные ссылки

1 голос
/ 09 марта 2019

Включите работы, но ответ Lankymart правильный.

Я создал файл helpers.inc:

Sub MakeAMsg(MsgText)
    MsgBox MsgText
End Sub

Я использовал Включить и сохранил расширение .inc:

<script language=VBS>
<!--#include file=helpers.inc-->
makeamsg("This Used Include")
</script>

Это работает. Я переименовал .inc с расширением VBS:

<SCRIPT language=VBS src=helpers.vbs></SCRIPT>
<script language=VBS>
makeamsg("This Used Script tags with vbs extension")
</script>

И это тоже работает.

Я проверил свой сервер, и по умолчанию для .vbs был задан mimetype text / vbscript. (Я нахожусь в процессе настройки другого, где я ничего не изменил, и у него также есть это отображение.)

Таким образом, использование #include работает , но лучше либо изменить расширение на .vbs, либо добавить mime-тип, дублирующий тип MIM-файла .vbs.

...