ASP经典应用程序在函数调用时挂起

时间:2012-07-13 19:20:49

标签: debugging function asp-classic

美好的一天!

我遇到了一个ASP经典应用程序的问题。我们正在进行SQL连接管理,一切都很完美,所以我们部署在另一个环境中供用户测试,其中一个ASP页面挂起90秒,结果是:

Active Server Pages error 'ASP 0113' 

Script timed out 

所以,我尝试添加一些调试代码。我用的是:

Response.End

检查它挂在哪里。我终于发现,这是我们开发的新功能,很明显!这是一个小提取物:

Dim sqlConn
Set sqlConn = SessionConnection("SQLConnection")
set rsIDXMDL = SQLQuery(sqlConn, sQuery)

如果我在调用SessionConnection()之前放置了Response.End,则该过程停止。如果我在调用SessionConnection()之后放入Response.End,则页面挂起90秒。这让我想到:“宾果!里面的东西都失败了!”所以,为了好玩,我在函数的第一行放了一个Response.End,如:

Function SessionConnection(SessVarName)
    Response.End
    [...]

我相信你能猜到发生了什么!页面仍然悬挂!这怎么可能?

1 个答案:

答案 0 :(得分:0)

理想情况下,您需要提高代码的效率,以便它根本不会超时,但如果不能作为乐队辅助,那么您可以尝试增加超时:

Server.ScriptTimeout = 180

此值指示服务器在服务器停止之前让ASP脚本运行的时间(以秒为单位)。默认值为90秒。

Set conn = CreateObject("ADODB.Connection") 
    conn.ConnectionTimeout = 120 
    conn.Open <connectionString>

如果conn是尚未打开的ADODB.Connection对象,则connectionTimeout属性将指示等待ASP应用程序最初连接到数据源的时间(以秒为单位)。默认值为15秒

Set conn = CreateObject("ADODB.Connection") 
    conn.Open <connectionString> 
    conn.CommandTimeout = 120 

CommandTimeout告诉服务器完成发送到数据源的任何命令需要等待多长时间(以秒为单位)。在打开连接之前和之后,此值是可编辑的。默认值为30秒

希望这有帮助。