我正在用C#编写一个WinCE应用程序,它向驻留在我网络上的APACHE服务器发出HTTP POST。由于一些网络问题(我猜),我在托管代码中得到以下异常
System.Net.Sockets.SocketException occurred
Message="A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond"
ErrorCode=10060
NativeErrorCode=10060
StackTrace:
at System.Net.Sockets.Socket.ConnectNoCheck(EndPoint remoteEP)
at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
at System.Net.Connection.doConnect(IPEndPoint ep)
at System.Net.Connection.connect(Object ignored)
at System.Threading.ThreadPool.WorkItem.doWork(Object o)
at System.Threading.Timer.ring()
并不总是抛出此异常,但是当它被抛出时,我的应用程序无法连接到服务器AT ALL。重复连接尝试无助于重新连接。唯一有帮助的是关闭和重新部署应用程序。
我无法捕获异常,因为它在托管代码中。有没有办法绕过这个并关闭到我的服务器的所有套接字连接并重新初始化它们?有什么我做错了吗?
答案 0 :(得分:2)
异常消息看起来有点误导(“连接尝试失败,因为已连接方”)但我认为这意味着您的硬件正在与服务器通信,但是服务器不接受TCP级别的连接。
我能想到的一个问题是“挂起”连接,导致服务器达到最大并发连接数并停止接受新连接。
虽然这只是一个猜测,但您可能想检查apache日志,如果您可以查看服务器是否报告任何内容,并且可能会在问题再次发生时尝试重新启动apache。如果这有帮助,你仍然需要找到原因。