2012-07-13 56 views
0

美好的一天!函數調用ASP經典應用hungs

我遇到了ASP經典應用程序的問題。我們工作的SQL連接管理,一切都完美,所以我們部署在另一個環境,爲用戶測試和ASP頁面hungs 90秒,結果之一:

Active Server Pages error 'ASP 0113' 

Script timed out 

所以,我嘗試添加一些調試代碼。我使用的是:

Response.End 

要檢查它掛在哪裏。我終於發現,這顯然是我們開發的新功能!這裏有一個小摘錄:

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

如果我把一個剛剛到Response.End調用SessionConnection()之前,該過程停止。如果我在調用SessionConnection()之後放置Response.End,頁面會掛起90秒。這讓我想到:「賓果!裏面的東西失敗了!」所以,只是爲了好玩,我把在到Response.End函數的第一行,如:

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

我相信你能猜到發生了什麼事!頁面仍然掛起!這怎麼可能?

+0

而不是'Response.End'使用'Response.Write(「我在這一行,這樣做和這個」)'後面是'Response.Flush'然後你會希望得到更多的信息。 – 2012-07-15 06:06:16

+0

好,我會試試! – 2012-07-16 11:44:44

回答

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秒

希望這會有所幫助。

+0

嗨!感謝你的回答。問題是,腳本在對函數SessionConnection的調用和該函數的第一行之間失敗......某處出於我們的代碼。此外,生產中的相同按鈕(使用舊會話管理)的相同點擊在不到半秒內處理完畢。 – 2012-07-16 11:47:19