VB6应用程序在几个小时后被防火墙阻止

问题描述:

我有一个客户的报告说他们遇到了我创建的VB6应用程序和他们的思科防火墙的问题。应用程序每隔几秒向我们的服务器发送HTTP POST请求,发送一个小的base64编码字符串。该应用程序最初工作正常,但大约三个小时后,似乎无法联系我们的服务器或互联网。当应用程序在防火墙之外时,应用程序可以运行愉快。VB6应用程序在几个小时后被防火墙阻止

我没有关于防火墙的更多细节,但这里是这一职位的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小时后成为问题?

这是一个思科防火墙,因此您很可能会看到xlate超时(默认为3小时),或者HTTP请求的问题不符合HTTP RFC并被ASA/PIX的http检查引擎阻止。您的应用程序是否打开单个TCP连接,并在整个3小时内使用相同的连接?如果是这样,最简单的方法就是让应用程序在指定的时间间隔内重新建立TCP连接。

+0

同意,尝试断开连接并在X时间后建立新连接。 – tcarvin 2012-04-27 18:43:15