Указание на разные включения в зависимости от того, на каком сервере находится файл - PullRequest
1 голос
/ 14 сентября 2011

Итак, я работаю над веб-сайтом в ASP / VBScript.Файлы должны работать на сервере разработки и на отдельном сервере контроля качества одновременно.К сожалению, у сервера dev есть нечетный URL, поэтому включение в него включает работу с ним, что приводит к их разрыву на сервере QA и наоборот.Я попытался использовать этот код в верхней части страницы:

    <%
    server = Request.ServerVariables("SERVER_NAME")

    If (Lcase(Left(server, 3)) == "dev" Then
        #include virtual ="/dev/Functions/DBConnection.asp"
        #include virtual ="/dev/Functions/ValidationRoutines.asp"
    Else
        #include virtual ="/Functions/DBConnection.asp"
        #include virtual ="/Functions/ValidationRoutines.asp"
    End If
    %>

Я подумал, что это сработает, потому что dev serve is dev.website.com и виртуальный путь включения на этом сервере должен включатькаталог / dev /.На всех других серверах (QA, Production) каталог / dev / должен быть опущен, как и в случае включения в блоке else.Когда я пытаюсь использовать этот код, я получаю сообщение об ошибке, и страница не загружается (не могу сказать, что это за ошибка, потому что я получаю только сообщение о том, что должен связаться с системным администратором).Страница работает, только если я добавлю include, соответствующий тому серверу, на котором я пытаюсь его запустить, так что это не проблема.

Любая помощь с этим будет принята с благодарностью, Коди

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

Вы не можете включить # include в логику таким образом.ASP делает все # в том числе, прежде чем любая логика будет даже рассмотрена.Итак, с вашим кодом выше, сервер попытается включить все эти файлы и сгенерирует ошибку компиляции.

Вы можете сделать

server.execute("somefile.asp")

, но это только создаст больше проблемв долгосрочной перспективе.

Вместо того, чтобы использовать разные пути, почему бы вам не создать виртуальный каталог с именем 'dev' на одной машине?Таким образом, вы можете стандартизировать пути, и вам не придется беспокоиться об этой проблеме вообще?

0 голосов
/ 14 сентября 2011

Я считаю, server - зарезервированное слово, и я также не думаю, что вы можете включать такие файлы.Классический ASP также не имеет ==.

Обновление

Выше все еще остается;Я удалил пример кода, поскольку @Cheran S правильно указывает, что включения будут обрабатываться перед выполнением любого кода, то есть при попытке найти другие файлы произойдет сбой.Вам нужно будет использовать относительные пути, используя #include file вместо #include virtual или, если это невозможно, переместить эти включаемые файлы в корневой каталог вашего сайта.

...