DOBON.NET DOBON.NETプログラミング掲示板過去ログ

IEがIISの応答に対して処理を行わない

環境/言語:[Visual Basic FrameWork 2.0]
分類:[ASP.NET]

特定のPCのIEがIISの応答(PostBack)を処理しないことが多々発生して困っています

例えばこんなコード
Protected Sub ButtonStart_Click(sender As Object, e As System.EventArgs) Handles ButtonStart.Click
System.Threading.Thread.Sleep(20 * 60 * 1000)
End Sub
を実行した場合IEがサーバーからの応答待ちの状態のままになることが発生しました

しかしIISのログを確認したらGet PostともにHttp Statusは200 0 0で正常に処理されたことになっているのでIIS側の問題ではないとおもっています

再現するPCが限定されているのでWindowsUpdate、不要なアドオンの削除、IEの初期化等考えられることは全てやったのですが状況は変わりませんでした

もう何をチェックしたらよいのかもわからない状態です
・問題を切り分けるために何をチェックしたらよいでしょうか?
・何か考えられる原因や対策方法はあるでしょうか?

よろしくお願いします

環境
サーバー Windows2003Server(64bit) FrameWork 2.0(32bit)
端末側 WindowsXp IE8(WindowsUpdateは最新です)
2012/01/25(Wed) 00:51:12 編集(投稿者)

■No29656に返信(Miraさんの記事)
スリープする時間は現象に関連していますか?現象は、スリープす
る時間が10分なら発生しないけれども、スリープする時間が20分だ
と発生する、というようなことはありますか?

リクエストは成功しているけれどもクライアントは応答待ちのまま、
ということから考えると、サーバーからクライアントへのレスポン
スの通信に時間がかかっているのですかね。私は、プロキシ サー
バーを使用する設定にしたことを忘れていて、なんでこんなに通信
速度が遅いのかと、途方にくれたことが何度かあります。
もりおさんいつも回答ありがとうございます

> スリープする時間は現象に関連していますか?

長ければ長いほど発生頻度が上がるといった感じです
短いプログラムでは発生しないということではなさそうです

> リクエストは成功しているけれどもクライアントは応答待ちのまま、
> ということから考えると、サーバーからクライアントへのレスポン
> スの通信に時間がかかっているのですかね。

なるほど、サーバー側ではPostの通信がすべて正常に終わるところまでは
チェックしていないということですか?
そういうことなら可能性あるとおもいますが
ただその現象をどのように確認したらいいのか・・・

今端末側のネットワークの設定はたしかにプロキシを使用していますが
イントラネット上では使用しない設定にしています
(Webサーバーはイントラネット上にあります)
IISのログからも端末のIPアドレスが見えているのでプロキシは経由していないと
考えています
IISのログに送信・受信バイト、応答時間を追加し
下記のような連続でPostBackするプログラムでテストを行いました

Protected Sub ButtonStartEternal_Click(sender As Object, e As System.EventArgs) Handles ButtonStartEternal.Click
Dim Count As Decimal = 0
Decimal.TryParse(LabelCount.Text, Count)
Count += 1
LabelCount.Text = Count.ToString

Dim ResponseTime As Integer = 0
Integer.TryParse(TextBoxResponseTime.Text, ResponseTime)
If ResponseTime > 0 Then
System.Threading.Thread.Sleep(ResponseTime)
Page.ClientScript.RegisterStartupScript(Me.GetType, "StartEternal", _
"<script type=""text/javascript"">document.getElementById(""ButtonStartEternal"").click();</script>")
End If
End Sub

ResponseTimeを500mSec、10Sec、1min、5minと設定して約3時間動かしたところ
500mSec ×753回目で応答待ち状態
10Sec ○継続して応答
1min  ×8回目で応答待ち状態
5min  ○継続して応答

といった結果になりました
応答時間とは関係ないようです

またIISのログもすべて正常でした
(HttpStatusは200 0 0で応答時間もResponseTimeとほぼ一致)
2012/01/26(Thu) 07:41:03 編集(投稿者)

■No29664に返信(Miraさんの記事)
> サーバー側ではPostの通信がすべて正常に終わるところまでは
> チェックしていないということですか?
はい、私がいいたかったことはそういうことだったのですが、調べてみ
たところ違う可能性が高いみたいです。すみません。IISのログにおける
200 0 0の3番目の0はsc-win32-statusですよね。sc-win32-statusは、レ
スポンスがクライアントに到達したときには0になるようです。レスポン
スがクライアントに到達していることはチェックされていると思われま
す。

IISのログにsc-win32-statusとして64のメッセージ
http://social.technet.microsoft.com/Forums/ja/iis7ja/thread/c10ef91b-cb32-4134-849f-aba9193e6e5b

現象が発生する原因として私があと思いつくのは、セキュリティソフト
がブラウザに干渉していることくらいです。同じコンピュータかつ、他
のブラウザでは現象は発生しますか?
もりおさん回答ありがとうございます

> 同じコンピュータかつ、他のブラウザでは現象は発生しますか?

本日問題のPCを引き上げてくるので動作確認します
> 同じコンピュータかつ、他のブラウザでは現象は発生しますか?

Chromeでは問題は発生しませんでした
Chromeインストール後もIE8.0では再現しました

ちがうユーザー(新規)でログインしなおしたら再現しなくなりました

ユーザープロファイルに何か問題が残っていたのでしょうか
IEを初期化(詳細設定のリセットボタン)しても再現したのですが・・・

原因は不明ですが対処法はある程度わかったので解決にします
ありがとうございました
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板