0

クライアントから、私が作成した VB6 アプリケーションとその cisco ファイアウォールで問題が発生しているという報告がありました。アプリケーションHTTP POSTは、base64 でエンコードされた小さな文字列を送信するリクエストを数秒ごとにサーバーに送信します。アプリケーションは最初は問題なく動作しますが、約 3 時間後にはサーバーやインターネットにまったく接続できないようです。アプリケーションがファイアウォールの外側にある場合、アプリケーションは問題なく実行できます。

ファイアウォールに関する詳細はありませんが、投稿用の VB6 コードは次のとおりです (Winsock1 は Winsock コントロールです)。

strHttp = "POST" & URL & " HTTP/1.1" & vbCrLf
strHttp = strHttp & "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" & vbCrLf
strHttp = strHttp & "X-Method: Submit" & vbCrLf
strHttp = strHttp & "Content-Length: " & lngBodyLength & vbCrLf
strHttp = strHttp & "Accept: text/html" & vbCrLf
strHttp = strHttp & "User-Agent: MyApplication (www.ourwebsite.com)" & vbCrLf
strHttp = strHttp & "Host: " & HOST & vbCrLf

strHttp = strHttp & vbCrLf & strBody

mainForm.Winsock1.Protocol = sckTCPProtocol
mainForm.Winsock1.RemoteHost = IP_ADDRESS
mainForm.Winsock1.RemotePort = 80

blnConnectionError = False
mainForm.Winsock1.Connect
While Not blnConnected And Not blnConnectionError
    DoEvents
Wend

mainForm.Timer_Http_Timeout.Enabled = True
mainForm.Winsock1.SendData strHttp

問題が発生した後にアプリケーションを再起動すると、さらに約 3 時間は問題なく動作するので、これを解決するためにコードで何かできるのではないかと考えています。

ファイアウォールを心配する上記のコードについて何かありますか?

3時間後にのみ問題になる理由はありますか?

4

1 に答える 1

3

これは Cisco ファイアウォールであるため、xlate タイムアウト (デフォルトは 3 時間) が発生するか、HTTP RFC に準拠していない HTTP 要求の問題が発生し、ASA/PIX の http インスペクション エンジンによってブロックされる可能性があります。アプリケーションは単一の TCP 接続を開き、この同じ接続を 3 時間ずっと使用していますか? その場合、これを回避する最も簡単な方法は、指定した間隔でアプリケーションに TCP 接続を再確立させることです。

于 2012-04-27T18:32:43.677 に答える