Назад | Перейти на главную страницу

Получение классического ASP для работы с файлами .js в IIS 7

Я перемещаю клиентское классическое веб-приложение asp на новый сервер на базе IIS7. На сайте есть несколько файлов .js с javascript, а также классические asp в тегах <%%>, которые содержат набор условных операторов, предназначенных для вывода фрагментов javascript на основе переменных состояния сеанса. Вот краткий пример того, каким может быть файл ....

var arrHOFFSET = -1;
var arrLeft ="<";
var arrRight = ">";


<% If ((Session("dashInv") = "True") And ((Session("systemLevelStaff") = "4") Or (Session("systemLevelCompany") = "4"))) Then  %>
    addMainItem("/MgmtTools/WelcomeInventory.asp?wherefrom=salesMan","",81,"center","","",0,0,"","","","","");
<% Else %>
    <% If (Session("dashInv") = "False") And ((Session("systemLevelStaff") = "4") Or (Session("systemLevelCompany") = "4")) Then %>
    <% Else %>
        addMainItem("/calendar/welcome.asp","",81,"center","","",0,0,"","","","","");
    <% End If %>
<% End If %>

defineSubmenuProperties(135,"center","center",-3,0,"","","","","","","");

В настоящее время этот файл (например, с именем custom.js) начнет выдавать ошибки js, потому что сервер, похоже, не распознает в нем код asp и, следовательно, не анализирует его. Я знаю, что мне нужно каким-то образом указать, что файл .js также следует рассматривать как файл .asp и обрабатывать его путем анализа. Однако я не знаю, как это сделать.

Вот то, что я пробовал до сих пор ... В узле Server в IIS в разделе HANDLER MAPPINGS я создал новую карту сценариев со следующими настройками.

Путь запроса: * .js Исполняемый файл: C: \ Windows \ System32 \ inetsrv \ asp.dll Имя: ASPClassicInJSFiles Сопоставление: Вызов обработчика, только если запрос сопоставлен с: Глаголы файла: Все команды Доступ: Сценарий

Я также создал аналогичный обработчик под самим узлом сайта.

В типах MIME .js определяется как application / x-javascript

Ничего из этого не работает. Если я просто переименую файл с расширением .asp, все заработает, однако это приложение плохо закодировано и содержит буквально 100 файлов с файлами .js, включенными в них под разными именами и местоположениями, поэтому переименование, поиск и замена - последнее вариант у меня есть.

принятые вами определения верны, но iis пишет дополнительное preCondition = "bitness64" в вашем web.config, вручную отредактируйте ваш web.config и удалите предварительное условие, и все будет работать

Я считаю твои шаги правильными. Я просто пробовал это на уровне сайта в IIS7 и 7.5, в обоих случаях он работает, и классический код ASP выполняется правильно.

Не уверен, что не так с вашей настройкой. Дважды проверьте, что сопоставление скрипта не ниже сопоставления StaticFile, просмотрев упорядоченный список.

Также, если вы используете 64-битную ОС, убедитесь, что пул приложений 64-битный, если для параметра «Включить 32-битное приложение» установлено значение true, вам необходимо использовать 32-битную версию asp.dll (C: \ Windows \ SysWOW64 \ inetsrv \ asp.dll)