我在 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>
所以在过去的几个月里,这对我来说非常有效,在两个单独的执行中为两个变量加载不同的数字。然后今天,我在我的服务器上复制了一个文件夹,将其重命名,现在神奇的是,在浏览器刷新的 10 次中有 9 次变量是相同的数字。
一个月前我的第二台服务器上的相同文件发生在我身上,我不得不删除第二台服务器上的所有文件,并从我的第一台服务器下载它们(现在正在复制),然后将它们上传回来修复。不幸的是,我没有下载我的第一台服务器的整个服务器内容,所以我无法逆转这个过程。所以我不确定这个问题是服务器端的,还是与我正在编写的代码有关?我只是不知道为什么它会工作这么长时间,然后突然停止工作。
我试过使用元无缓存控件。我删除了我之前从服务器复制的新文件夹,但没有用。我还尝试删除过去几天上传的文件,但也没有用。我尝试将“文件名”加载为数组,例如:
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
%>