2009-03-02 68 views
1

我有一个Web应用程序,轮询另一台服务器上的Web服务。服务器位于同一网络上,并通过一个内部IP引用,在端口8080上的HttpWebRequest不返回,关闭连接

每15秒运行,一个请求被发送出去,其接收与作业信息的XML响应。 95%的时间,这个效果很好,但是在随机时间,对服务器的请求为空,并报告“由远程主机强行关闭的响应”。

研究这个问题,其他人设置的KeepAlive =假。这并没有解决这个问题。 Web服务器运行.NET 3.5 SP1。

Uri serverPath = new Uri(_Url); 

// create the request and set the login credentials 
_Req = (HttpWebRequest)WebRequest.Create(serverPath); 
_Req.KeepAlive = false; 
_Req.Credentials = new NetworkCredential(username, password); 
_Req.Method = this._Method; 

电话响应:

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
_ResponseStream = response.GetResponseStream(); 

的方法用于此是GET。我尝试更改超时时间,但默认值足够大,可以将其考虑在内。

我们执行的其他请求是数据发布到服务器的POST,我们所得到的是同样的问题随机为好。没有防火墙影响到这一点,我们排除了病毒扫描程序。任何想法,以帮助解决这个问题,非常感谢!

+0

什么是断开的频率是多少?服务器日志中有趣的事情? – jdigital 2009-03-02 22:19:04

回答

5

你关闭响应流和响应本身的处置?这是使用WebRequest“挂起”的最常见原因 - 您可以同时向同一台计算机打开多少个连接。 GC将最终完成连接,但如果正确处置它们,这不是问题。

0

我不排除网络问题作为问题的可能原因。你是否运行了ping服务器来查看是否丢失了与失败请求相同时间的数据包?

0

将FtpWebRequest对象的timeout属性设置为最大值,我用4 GB的文件试了一下,效果很好。