Классический ASP: проблемы с URL-адресом при дублировании приложения

У меня есть старое приложение Classic ASP, которое я хочу продублировать параллельно, то есть я хочу настроить еще одну копию (общающуюся с другой базой данных) вместе с оригиналом.

Итак, там, где у меня есть //MyServer/MyApp1/, у меня скоро будет //MyServer/MyApp2/... пока все хорошо.

За исключением того, что многие URL-адреса в приложении являются абсолютными (например, файлы JS и CSS), например. <script type="text/javascript" src="/MyApp1/menu.js"></script>.

Я мог бы поискать ссылки на /MyApp1/ и заменить его на /MyApp2/, но это надоедливая задача, которую мне придется повторять, когда я обновляю основное приложение, и в случае необходимости создания других копий - вероятность, хотя и временная.

Я мог бы изменить эти URL-адреса на родительские пути, но это означает, что мне нужно обращаться к каждому ресурсу по-разному, в зависимости от того, где я нахожусь в структуре папок приложения. Опять же, это сработает, но мне не нравится использовать родительские пути по ряду причин.

Учитывая, что в Classic ASP нет функции тильды (~) (для ссылки на корень приложения), есть ли альтернативы, которые я могу рассмотреть?


person CJM    schedule 06.12.2010    source источник


Ответы (2)


@CJM: обычно у меня есть db.asp, который содержит function и sub, которые обрабатывают открытие/закрытие соединений с базой данных в качестве основного включения практически на всех моих страницах. В этом db.asp я бы определил путь appurl или absurl, который в вашем случае мог бы иметь /MyApp1, а затем вы могли бы использовать <script type="text/javascript" src="<%=appurl %>/menu.js"></script> в своих сценариях.

В первый раз, когда вы это сделаете, это будет немного похоже на миссию поиска/замены, но как только это будет сделано, последующие «дубликаты» проектов будут нуждаться только в обновлении этой одной переменной.

person stealthyninja    schedule 06.12.2010
comment
Собственно, я рассматривал этот вариант. Я не уверен, что мне нужно будет повторять операцию достаточно часто, чтобы оправдать усилия, но часть меня, страдающая ОКР, думает, что это дело принципа! Это решение может быть таким же хорошим, как и любое другое. - person CJM; 07.12.2010

В классическом ASP вы можете использовать Server.MapPath("/") для получения корневого каталога или Server.MapPath(".") для получения текущего каталога.

person Joel Spolsky    schedule 06.12.2010
comment
Server.MapPath возвращает физический путь, а не URL-адрес - это URL-адрес, который меня интересует. - person CJM; 07.12.2010