Server.Execute дублирует динамическое содержимое

Я создал страницу в ASP, которая загружает динамический контент с кодом, подобным этому:

<%
  var1 = int(rnd * 5) + 1
  var2 = int(rnd * 10) + 1
%>
<html>
<body>

what variable 1 is: <%=var1%>
what variable 2 is: <%=var2%>

</body>
</html>

Затем у меня есть еще одна страница, которая использует Server.Execute для выполнения предыдущего файла, упомянутого 2+ раза, с использованием цикла. Код выглядит следующим образом:

<% filename = request.querystring("page") %>

<table class="domtable">
<% for j = 1 to 2%> <%qnumb = qnumb + 1%>
  <tr> 
      <td align="left">
        <%server.execute (filename)%> 
        <% If qnumb < 2 then%>
        <br/><hr><br/>
        <%end if%>
      </td></tr>
  <%next%>
</table>

Так что за последние пару месяцев у меня это отлично работало, загружая разные числа для обеих переменных при двух отдельных исполнениях. Затем сегодня я продублировал папку на своем сервере, переименовал ее, и теперь волшебным образом переменные имеют одно и то же число примерно в 9 из 10 раз, когда браузер обновляется.

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

Я пробовал использовать элементы управления meta no-cache. Я удалил с сервера новую папку, которую продублировал ранее, и это не сработало. Я также пытался удалить файлы за последние пару дней, которые были загружены, но это тоже не сработало. Я попытался загрузить «имя файла» в виде массива, например:

filename(1) = request.querystring("page")
filename(2) = request.querystring("page") 

for j = 1 to 2
  Server.Execute(filename(j))

next

Я действительно надеюсь, что кто-то знает, что я делаю неправильно здесь.

-РЕДАКТИРОВАТЬ-

Я также делаю это и получаю те же результаты.

<%
'rnd.asp'
pStr = "private, no-cache, must-revalidate" 
Response.ExpiresAbsolute = #2000-01-01# 
Response.AddHeader "pragma", "no-cache" 
Response.AddHeader "cache-control", pStr
server.execute ("rndj.asp")
response.write ("<hr>")
randomize(3)
server.execute ("rndj.asp")
%>

<%
'rndj.asp'
pStr = "private, no-cache, must-revalidate" 
Response.ExpiresAbsolute = #2000-01-01# 
Response.AddHeader "pragma", "no-cache" 
Response.AddHeader "cache-control", pStr
randomize
response.write rnd
response.write "<br>"
response.write rnd
%>

Я начал использовать этот код ниже, который просматривает указанный файл как обычный текст и удаляет из него теги asp, а затем использует Execute для запуска его в исходном файле. Проблема в том, что все мои страницы, которые я вызываю, используются для других ресурсов, и сценарий замены не позволяет мне добавлять теги asp вокруг строк включения.

<%
Dim sTargetFile, sTargetFileContents
Dim oFSO, sContents

Function GetFileContentsForExecution(sTargetFile)

'Obtain a reference to the FileSystemObject
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")

'Obtain the file contents
sContents = oFSO.OpenTextFile(Server.MapPath(".") & "\" & sTargetFile).ReadAll
Set oFSO = Nothing 'reference to the FileSystemObject

'Remove the ASP scripting tags
rand = int(rnd * 2) 
sContents = Replace (sContents, "<" & "%", "")
sContents = Replace (sContents, "%" & ">", "")
GetFileContentsForExecution = sContents
End Function

sTargetFile = "rndj.asp"

for j = 1 to 6

'Get the contents of the file to execute
sTargetFileContents = GetFileContentsForExecution(sTargetFile)
Execute sTargetFileContents

next

if j < 3 then 
response.write ("<br/><hr><br/>")
end if
%>

person xxstevenxo    schedule 08.05.2012    source источник
comment
Есть ли причина, по которой вы не используете Включает вместо Server.Execute? Я думаю, вы могли бы легко устранить эту проблему, изменив вместо этого свои файлы.   -  person HK1    schedule 08.05.2012
comment
Да, я начал с включения, но список файлов, которые мне нужно было бы включить, слишком велик и резко замедляет время загрузки страницы. Я обнаружил, что использование Server.Execute было намного быстрее и дало мне возможность использовать переменную в скрипте, поскольку вы не можете использовать переменные внутри тега include.   -  person xxstevenxo    schedule 08.05.2012
comment
На одном сервере работает, на другом нет. Оба используют один и тот же сценарий, и оба размещены на Godaddy.   -  person xxstevenxo    schedule 08.05.2012
comment
Мне непонятно: а) что вы ожидаете, и б) что вы на самом деле получаете. Можете ли вы включить в вопрос результаты, которые вы получаете, и пример результатов, которых вы ожидаете?   -  person AnthonyWJones    schedule 08.05.2012
comment
текущий результат, который я получаю, - это использование server.execute для выполнения одного и того же файла (дважды), случайные переменные одинаковы, поэтому первый экземпляр выполнения страницы будет отображать что-то вроде 77, а затем второй экземпляр выполнения страницы будет отображать то же самое 77. То, что должно произойти, и то, что сейчас происходит только на 1 из 4 моих серверов. Может ли первый экземпляр выполнения страницы читать число, например 77, а второй экземпляр выполнения — другое число, например 15. Вы можете понять, что я имею в виду здесь: stevenschemers.com/random/rnd.asp   -  person xxstevenxo    schedule 08.05.2012
comment
Использование Server.Execute для выполнения нескольких экземпляров одного и того же файла (с разными выводами) отлично работало на двух моих основных серверах до вчерашнего дня. Я так сбит с толку, почему все работает нормально, а из ниоткуда - нет :|   -  person xxstevenxo    schedule 08.05.2012


Ответы (1)


Ссылка на рабочее решение

<%
 'rnd.asp'
 randomize

 application("randomseed") = rnd
 server.execute ("rndj.asp")

 application("randomseed") = rnd
 server.execute ("rndj.asp")

%>

<%
 'rndj.asp'
 randomize application("randomseed")
 response.write rnd
 response.write("<br />")
 response.write rnd
 response.write("<br />")
 response.write("<br />")

%>

person xxstevenxo    schedule 08.05.2012