Asp classic ASP 3.0-服务器。执行问题:遭受;ASP健忘症“;(案文订正)
我正在使用IIS 6,并创建了两个ASP 3.0文件: -Main.asp -Colors.asp Main.asp 没什么…还有ASP健忘症-谁 编辑2 亲爱的比特维兹: 我正在使用Server.Execute而不是#include来释放服务器。如您所知#在ASP中始终首先处理包含,无论它们是否在Asp classic ASP 3.0-服务器。执行问题:遭受;ASP健忘症“;(案文订正),asp-classic,Asp Classic,我正在使用IIS 6,并创建了两个ASP 3.0文件: -Main.asp -Colors.asp Main.asp 没什么…还有ASP健忘症-谁 编辑2 亲爱的比特维兹: 我正在使用Server.Execute而不是#include来释放服务器。如您所知#在ASP中始终首先处理包含,无论它们是否在If块中。我基本上是在尝试通过server.Execute实现动态服务器端包含,根据Microsoft的说法,它实际上可以放在If块中: (注意:这本来是一篇文章,但该网站已经不存在了,该链接现在是
If
块中。我基本上是在尝试通过server.Execute实现动态服务器端包含,根据Microsoft的说法,它实际上可以放在If
块中:
(注意:这本来是一篇文章,但该网站已经不存在了,该链接现在是一个数字域的重定向。请随意搜索Paul Litwin的文章,如果可以找到,请更新该链接。)
我仍然需要在这方面的帮助,或者对我的特殊情况进行更好的解释。我在Color.asp文件中有很多变暗的变量,如果sColor=False,我不希望服务器去处理这些变量。我想知道这是否是一个范围问题?我发现您可能会遇到两个范围问题: 首先,由于您的sRed在另一个文件中,所以在运行server.execute时,范围是否仅限于该文件 其次,由于您在if-then中调用server.execute,我希望您的另一个文件的作用域介于if和endif之间。然后在endif之后检查sRed。在这两种情况中,我认为第二种可能性更大。试试你的
If sRed then
Response.Write "Color is Red"
End If
阻塞内部您的第一个if-then阻塞,在服务器之后。执行并查看是否是这种情况。我想知道这是否是范围问题?我发现您可能会遇到两个范围问题: 首先,由于您的sRed在另一个文件中,所以在运行server.execute时,范围是否仅限于该文件 其次,由于您在if-then中调用server.execute,我希望您的另一个文件的作用域介于if和endif之间。然后在endif之后检查sRed。在这两种情况中,我认为第二种可能性更大。试试你的
If sRed then
Response.Write "Color is Red"
End If
阻塞内部您的第一个if然后阻塞,在服务器之后。执行并查看是否是这种情况。不要认为不做一些更改就可以完成。使用server.execute,这两个页面完全不知道彼此的局部变量(参见下面的证明)。包含会更好,尽管您确实失去了条件能力 请求/响应对象由两个文件共享,因此您可以根据需要使用它们。至于在文件之间发送变量,您唯一的选择是会话或应用程序变量。请参见下面的代码示例 文件1:
dim localParent
localParent="start Value"
Response.write("Parent:"&localParent&"<br>")
Server.Execute "file.asp"
Response.write("Parent after Exec:"&localParent&"<br>")
会话变量传递:
文件1:
文件2:
Dim myLocalVar
myLocalVar = session("myVar") ' Get variable from session
'Do stuff to myLocalVar
session("myVar") = myLocalVar 'Put variable back into session for calling page to use.
不要认为没有一些改变就可以做到。使用server.execute,这两个页面完全不知道彼此的局部变量(参见下面的证明)。包含会更好,尽管您确实失去了条件能力 请求/响应对象由两个文件共享,因此您可以根据需要使用它们。至于在文件之间发送变量,您唯一的选择是会话或应用程序变量。请参见下面的代码示例 文件1:
dim localParent
localParent="start Value"
Response.write("Parent:"&localParent&"<br>")
Server.Execute "file.asp"
Response.write("Parent after Exec:"&localParent&"<br>")
会话变量传递:
文件1:
文件2:
Dim myLocalVar
myLocalVar = session("myVar") ' Get variable from session
'Do stuff to myLocalVar
session("myVar") = myLocalVar 'Put variable back into session for calling page to use.
Bitwize是完全正确的-调用页无法访问已执行页的本地变量,并且已执行页也无法访问调用页的本地变量。如果需要共享局部变量,则需要使用include指令 我已经使用
Server.Execute()
技术构建了整个ASP站点体系结构,并且每个执行的脚本都独立有效地执行。您只能通过应用程序
或会话
对象共享变量,这两个对象都有问题
实现所需效果的唯一其他方法是通过代码中的HTTP请求发送到其他脚本,并让这些脚本返回JSON/XML结构和相关信息,但是这将比仅仅使用include指令增加更多的开销。Bitwize是完全正确的-调用页无法访问已执行的页本地变量,并且已执行的页也无法访问调用页本地变量。如果需要共享局部变量,则需要使用include指令 我已经使用
Server.Execute()
技术构建了整个ASP站点体系结构,并且每个执行的脚本都独立有效地执行。您只能通过应用程序
或会话
对象共享变量,这两个对象都有问题
实现所需效果的唯一其他方法是通过代码中的HTTP请求发送到其他脚本,并让这些脚本返回JSON/XML结构和相关信息,但这将比仅使用include指令增加更多的开销。这是一个范围问题,这是正确的。执行
Server.Execute()
实际上相当于从服务器请求该页面,并在调用Server.Execute()时将返回的输出直接合并到页面中。已执行页面无法从调用页面查看本地变量,相反,调用页面无法访问已执行页面的本地变量,尽管我非常确定您不能在Server.Execute()调用中使用querystring变量。执行的页面可以访问与调用页面完全相同的请求
对象,因此您无法传递此变量way@RobV-我被纠正了。无法通过server.execute发送查询字符串变量。这只剩下会话/应用程序。您认为这是一个范围问题是正确的。执行Server.Execute()
实际上相当于从serv请求该页面
Response.write("Child:"&localParent&"<br>")
localParent = "Child changed"
Response.write("Child Afer set:"&localParent&"<br>")
Parent:start Value
Child:
Child Afer set:Child changed
Parent after Exec:start Value
Dim myVar
'Do stuff
session("myVar") = myVar ' Save variable in session
Server.Execute "file.asp"
myVar = session("myVar") 'get changed variable back out of session
Dim myLocalVar
myLocalVar = session("myVar") ' Get variable from session
'Do stuff to myLocalVar
session("myVar") = myLocalVar 'Put variable back into session for calling page to use.