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 пъти, когато браузърът се опреснява.

Това ми се случи със същите файлове на втория ми сървър преди месец и трябваше да изтрия всички файлове от втория сървър и да ги изтегля от първия си сървър (този, който се дублира сега), след което да ги кача обратно и това поправих го. За съжаление, не изтеглих цялото съдържание на сървъра на първия си сървър, така че не мога да обърна процеса. Така че не съм сигурен дали този проблем е от страна на сървъра или е свързан с кода, който пиша? Просто не знам защо ще работи толкова дълго, след което просто спира да работи от нищото.

Опитах да използвам мета контроли без кеш. Изтрих новата папка, която дублирах по-рано от сървъра и това не проработи. Опитах също да изтрия файлове от последните няколко дни, които са качени, но това също не проработи. Опитах се да заредя „име на файл“ като масив като:

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
Има ли причина да не използвате Includes вместо Server.Execute? Мисля, че бихте могли лесно да отстраните този проблем, като вместо това промените вашите файлове да бъдат включени.   -  person HK1    schedule 08.05.2012
comment
Да, започнах да използвам включвания, но списъкът с файлове, които трябва да включа, е твърде голям и забавя драстично времето за зареждане на страницата. Открих, че използването на Server.Execute е много по-бързо и ми даде възможност да използвам променлива в скрипта, тъй като не можете да използвате променливи вътре в етикет за включване.   -  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