Я перемещаю клиентское классическое веб-приложение 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)