【问题标题】:Classic ASP - Request object Is Empty经典 ASP - 请求对象为空
【发布时间】:2009-05-19 16:09:24
【问题描述】:

我正在向一个旧的经典 asp 站点添加一项功能,但遇到了一个有趣的问题。页面上的以下行导致有用的错误“需要对象:''”

strServerName = Request.ServerVariables("server_name")

当我附加一个调试器查看它时,请求实际上是空的,我不明白这是怎么发生的?这一行存在于几页上,除了这一行之外,执行时没有任何问题。在这种情况下,该页面由另一个页面的重定向执行。

我已经搜索了一天左右的解决方案,但找不到任何有用的东西。我很绝望,任何想法将不胜感激。

哦,如果需要更多信息,请随时给我打电话。

谢谢!

更新 1
根据要求,下面是包裹在 标记中的整个代码 sn-p。此块作为文件中的第一个代码存在(名为“order-results-instant.asp”):

<%
strServerName = Request.ServerVariables("server_name")
strServerName = UCase(strServerName)

strServerURL = "http://localhost/cbr"
strServerURLhttps = "https://localhost/cbr"
strConnect = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=CBR; Integrated Security=SSPI"

Dim objConn
Dim sql_stmt
Dim rs  
%>

更新 2
我已使用以下 2 种方法将执行重定向到此页面 - 也许这会导致请求丢失?

 'Response.Redirect strServerURL & "/order-results-instant.asp?gwstep=1"
 Response.Write "<META HTTP-EQUIV=""refresh"" content=""5;URL=" & strServerURL & "/order-results-instant.asp?gwstep=1"">"

【问题讨论】:

  • 请从页面发布代码(包括 标头)并提供页面的完整文件名。
  • 我同意 OrbMan,如果我只有一个基本的 ASP 页面,其中没有其他内容,则此代码可以工作。您能否提供有关您的代码的更多详细信息?可能是外部变量导致了这种情况。
  • 首先从源页面重定向加载页面。我已经使用以下 2 种方法尝试了这种重定向 - 也许这会有所启发? (我很抱歉,自从使用asp已经很长时间了,即使那样我也没有很多经验)。 'Response.Redirect strServerURL & "/order-results-instant.asp?gwstep=1" Response.Write ""

标签: iis asp-classic vbscript


【解决方案1】:

扫描其余代码。在全球级别,您会发现:-

Dim Request

重命名此变量及其当前用法以及附加到脚本上下文的请求对象将变得可见。

【讨论】:

  • 你先生是个天才!!!我现在感觉完全愚蠢,但我非常感谢你!
【解决方案2】:

您的服务器上是否允许(打开)Active Server Pages Web 服务扩展?

【讨论】:

  • 是的,其他asp文件执行没有问题(即使在访问Request对象时)。
【解决方案3】:

我使用以下代码将您的代码复制到我的测试 asp 文件中,并且它重定向得很好。

<%
strServerName = Request.ServerVariables("server_name")
strServerName = UCase(strServerName)
strServerURL = "http://localhost/"
strServerURLhttps = "https://localhost/"
strConnect = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=CBR; Integrated Security=SSPI"
Dim objConn
Dim sql_stmt
Dim rs  

Response.Write(strServerName)

if Request.Querystring("test") <> "1" then
    Response.Redirect("http://" + strServerName + "/asptest.asp?test=1")
 end if
%>

唯一真正的区别是我在重定向中添加了“http://”。也许我所做的一些事情可以帮助您解决问题。

谢谢

【讨论】:

  • 我还能够获取您的示例页面并让它毫无问题地运行,并且可以访问 Request 对象(就像我对同一站点中的其他页面所做的那样)。但是重定向后的空请求仍然存在同样的问题。我还检查以确保我使用的是完全限定的 url,而且我实际上正在这样做,并且更改它似乎没有任何区别。
【解决方案4】:

如果您尝试在页面的较早位置访问它是否有效?

【讨论】:

  • 实际上,这是执行代码的绝对第一行失败。我已将它移到页面中的稍后位置,它会导致相同的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
相关资源
最近更新 更多