QA@IT

HttpWebRequestを使用してGetResponse時にタイムアウト

7396 PV

お世話になります。

C#/Framework3.5を使用して、WebサイトからHtmlを取得するアプリケーションを開発しています。
ループ処理中でパラメータを変更して、同じURLに対してHttpWebRequest.GetResponseを連続で呼び出しているのですが、そのアプリケーションをクラシックASPのサーバー上で実行した場合のみ何回かGetResponseを呼び出したところでタイムアウトが発生し、その後は全てタイムアウトになる現象が発生しています。
サーバ上で実行してもタイムアウトしないようにしたいのですが、何か原因として考えられることはありますでしょうか?

備考:
・HTMLを取得するWEBサイト、実行するサーバ共に自端末です。
OS:Windows7HomePremium
・タイムアウトが発生するまでに必要とする回数は一定ではありません。
(少ないときは20回、多いときは40回程度ループしたところでタイムアウト)
・GetRequestを1回実行するたびに毎回HttpWebRequest.Abort()やStream.close()を行っています。
・前述していますが、EXEを単体で実行した場合にはタイムアウトは起こりません。
・タイムアウト待ちになっている状態で、ブラウザで同一サーバの別ページを開こうとするとタイムアウトになります。

以上です。
よろしくお願いいたします。

回答

結局原因も解決法も分かりませんでしたが、ASP.NETサーバ上から実行した場合はタイムアウトが発生しないようなので、そちらで作り直すことにしました。
ありがとうございました。

編集 履歴 (0)

IISのアプリケーションプールの詳細設定を変更して
改善しないか試してみられてはいかがでしょうか。

自端末内アクセスなので見当違いかもしれませんが、連続接続とのことなので
ラピッドフェールなどのセキュリティ保護機能が働いているかもしれません。

参考(IIS6.0のものです)
http://www.atmarkit.co.jp/fwin2k/dnsvrguide/iis02/iis2.html

編集 履歴 (0)
  • ご意見ありがとうございます。
    ラピッドフェール機能を切って試してみましたが残念ながら改善しませんでした…。

    おっしゃる通り確かにIISのセキュリティ周りが怪しそうなので見直せるところがないか再度確認してみようかと思います。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。