ASP Classic:url param的请求功能不起作用?

时间:2014-10-02 16:21:43

标签: asp.net forms asp-classic request

我通常不会处理我们网站的旧ASP页面。我没有更改这些页面中的任何代码。但突然之间,request("param")的所有页面都无法正确加载。

这基本上是它的结构。我的所有页面都包含一些其他.asp文件。在每一个我最后都写了类似response.write("test")的内容,以确保页面的执行完成并且确实如此。然后在我的页面上我尝试访问,我在所有包含response.write("test")后的第一行尝试,这显示测试消息。不过,如果我在此之前添加声明request("param") BIM!没有显示测试信息。

我不知道它可能是什么,甚至我怎么可以调试它。你有什么建议吗?

同样,我没有更改任何ASP代码,它工作正常。我唯一能想到的是我在服务器上添加了一个新网站,我创建了一个绑定到新网站。但我没有添加任何绑定到以前的ASP页面的网站。我不知道它是否相关。这也只发生在我们的测试服务器上。制作网站工作正常。

编辑:我发现服务器错误说The Template Persistent Cache initialization failed for Application Pool 'local.website1.com' because of the following error: Could not create a Disk Cache Sub-directory for the Application Pool. The data may have additional error codes.这可能是相关的吗?

编辑:我刚尝试按request("param")更改Request.QueryString("param"),但这有效,但我不想编辑我request的每一页。这是怎么回事......

编辑:我尝试过的另一件事。我清空了现在只有

的页面
<% 
  request("param")
  response.write("test")
%>

我从上一页的链接访问该页面。通过链接访问我的页面,我不会显示测试消息。但是如果我回到浏览器的url并按回车键(直接访问页面,而不是链接),它将显示&#34; test&#34;。我应该调查上一页吗?它是否与通过参数传递有关?

编辑:还有一件事要做。 在我的页面a pagea.aspx,我有myasppage.asp的链接?param = value,我创建了两个链接。一个是asp:linkbutton,我在后面设置了postBackUrl = myasppage.asp?param=value;。另一个链接是asp:hyperlink,我设置了navigateUrl = myasppage.asp?param=value;。超链接控件的链接工作。 linkBut​​ton中的链接不起作用。

3 个答案:

答案 0 :(得分:1)

Classic ASP的应用程序池需要以Classic模式运行,而不是以集成模式运行。如果新网站当前使用与网站1网站相同的应用程序池,则为新网站创建新的应用程序池。

我通过搜索&#34; 经典ASP中的申请表停止工作&#34;或类似的东西。

我很抱歉没有考虑过这个问题。至少我以前的答案是调试的一个很好的教训。我希望你不需要太多的Rograine来恢复脱发。

答案 1 :(得分:0)

如果您希望使用速记请求(&#34; param&#34;)而不是长格式request.querystring(&#34; param&#34;)或request.form(&#34) ; param&#34;)那么你需要记住,这种速记方法不仅在编码方面草率,而且还会导致像你一样的问题。

我不知道确切的顺序是什么。但我认为请求(&#34; param&#34;)将首先检索查询字符串参数,然后是形式,然后是cookie。 (关于那个命令我可能错了)。如果这在编程方面不好,则表示您正在使用请求(&#34; fname&#34;)而不是request.form(&#34; fname&#34;)从提交的表单中获取数据。但是url是form.asp?timestamp = 234234。 ASP将追随查询字符串参数和&#34; fname&#34;将是空的,因为它不存在于查询字符串中。 ASP不够智能,无法在所有三个(表单,查询字符串,cookie)对象中搜索参数。

将代码清理为request.form / request.querystring。或进一步调查,以确保不适合你的网址没有隐藏的查询字符串。如果您启用了IIS重写规则,则可能会显示查询字符串,从而为您提供漂亮的URL。

尝试使用此代码调查哪些变量有效:

<%
      Response.Write ("<b>All form Variables</b><br>")
       For Each Item In Request.Form
        xName = Item
        xValue = Request.Form(Item)
        Response.Write("Name: " & xName & " | Value: " & xValue & "<BR>" )     
       Next 

       Response.Write ("<BR><b>All QuersyString Vars</b><br>")
       For Each Item In Request.Querystring
        xName = Item
        xValue = Request.Querystring(Item)
        Response.Write("Name: " & xName & " | Value: " & xValue & "<BR>" ) 
       Next 

 %>

如果上面的代码最终为您提供了Form和Querystring变量(在相关页面上),那么您就知道ASP有一个问题,不知道您正在使用什么对象。

答案 2 :(得分:0)

这是评论的文字太多,所以我会将其作为答案发布。我希望你不介意再做一次测试。弗兰克建议启用详细错误(enable detailed errors in IIS)。如果你还没有这样做,请这样做。在您的问题的早期,您声明以下代码失败。

<% 
  request("param")
  response.write("test")
%>

请将以下调试行添加到测试

<% 
  on error resume next 
  request("param")
  response.write "<br />Error number " & Err.number
  response.write "<br />Error description" & Err.Description
%>

希望这能让我们更详细地了解问题所在。我怀疑你是否正确调查你发现的错误。我找到了一些关于这个问题的帖子,你可能想看一下。

这两个网站引用此网站:Template Persistent Cache initialization failed for Application Pool" on IIS 7 using Classic ASP