ExecuteGlobal в VBScript, ASP на IIS 5.1 (Win XP Pro) не работает - PullRequest
0 голосов
/ 30 октября 2009

Какой параметр может отсутствовать или использоваться неправильно, что приведет к сбою того же кода, который работает на сервере IIS 6.0, на сервере IIS 5.1?

Я унаследовал это большое приложение Classic ASP. Он «кэширует» серию файлов с функциями в них с помощью команды ExecuteGlobal. На обоих серверах команда выполняется без ошибок. Однако, когда приложение позже пытается ссылаться на функции, которые были «кэшированы», IIS 6.0, кажется, работает просто отлично, в то время как IIS 5.1 действует так, как будто эти функции никогда не существовали, и я получаю ошибки на этот счет.

Система 5.1 предназначена для тестирования на XP Pro box. 6.0 - наша производственная система на Windows 2003.

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

Какие направления я пропустил, изучая?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2009

Можете ли вы опубликовать код для фальшивых вещей ExecuteGlobal, может быть возможно реорганизовать его, чтобы заставить его делать то, что вы хотите, используя Include, чтобы вам не пришлось ничего ломать. В противном случае может понадобиться немного найти и заменить:)

0 голосов
/ 31 октября 2009

При обработке одного и того же HTTP-запроса происходит ли «кэширование» и «использование функций, которые были кэшированы»?

Если ответ «да», то у меня нет идей, и я искренне надеюсь, что кто-то еще ответит на ваш вопрос.

Если ответ «нет», то я уверен, что ваша проблема в том, что вы «кешируете» функцию в другом контексте выполнения VBScript.

Попробуйте (конечно, на тестовом сервере :-) добавить следующие 2 строки в файл, который определяет функции:

Dim g_FunctionsLoadedOK
g_FunctionsLoadedOK = "OK"

и следующую строку непосредственно перед использованием функции:

if( Eval( "VarType(g_FunctionsLoadedOK)" ) <> vbString then
    ' Then you're sure there's no 'g_FunctionsLoadedOK' string variable defined in this VBScript execution context,
    ' so maybe you should reload the cached functions, or do something else..
end if

P.S. Если система, с которой вы имеете дело, действительно большая , почему бы не использовать <! - #include file = "MyFile.inc" -> вместо этого подхода "ExecuteGlobal"?

...