0

良い一日!

使用している ASP クラシック アプリケーションで問題が発生しています。私たちは SQL 接続管理に取り組んでいましたが、すべてが完璧だったので、ユーザーがテストするために別の環境に展開し、ASP ページの 1 つが 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
    [...]

何が起こったのか、きっとお分かりでしょう!!!ページがまだハングします!!! これはどのように可能ですか?

4

1 に答える 1

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 秒です

お役に立てれば。

于 2012-07-13T19:30:33.907 に答える