0

只是想知道 ASP 在执行 Server.Transfer 两个级别时有哪些限制?所以一个页面转移到另一个页面,然后转移到另一个页面。

这是我们当前的设置。为了取悦 SEO,我们创建了包含关键字的“假” URL。然后,我们有一个 404 错误处理程序 (IIS) 来处理这些,重定向到另一个 ASP 页面,该页面从 URL 中提取一些关键信息,并执行 Server.Transfer 到我们的“真实”页面。由于本文范围之外的原因,我需要从该页面进行进一步的 Server.Transfer。我们现在所在的页面需要设置页面标题。

这可能吗?

4

1 回答 1

1

你想要的当然是可能的。

当然,有一些限制......但是,限制不在于您计划菊花链的服务器传输数量......只要确保您最终不会造成恶性循环 :)

限制如下;server.transfer(和 server.execute 也一样)无法访问前一页的变量上下文。

因此,如果您在 page1 中设置了一个变量说 Age=50,并且 page1 执行 server.transfer 到 page2,则不要期望 page2 知道关于 page1 声明和设置的那个 Age 变量的任何信息。事实上,你甚至可以在 page2 中对同一个变量(Age)进行 Dim,不会报错。这是因为,.transfer'ed 和 .execute'd 页面都不像 [!--include...] 文件那样工作......

那么该怎么办?您如何在计划使用 server.transfer 以菊花链方式连接的那些页面之间共享信息?答案是使用会话变量!这是一种有效的方法..(当然,您可能会不遗余力地写入数据库或文本文件,但为什么呢?)

您的 page2 和 page3 可以从原始 page1 共享的唯一另一件事是查询字符串,以及发布和 cookie 数据!这些请求集合在传输的(或执行的)页面中仍然可用。这意味着如果原始页面(page1)被点击为 page1.asp?age=,您可以在 page2 和 page3 中执行 request("age") 99

无论如何,回到你的组织。问题......你想要的当然是可行的......
只是不要在page1中设置任何变量,只需使用会话变量......

完成最后一页后,不要忘记清理会话变量。

希望这可以帮助你...

于 2012-02-09T23:55:35.640 回答