SocketsHttpHandler未遵循设置的超时时间问题求助
问题排查:ConnectTimeout设置未生效的原因
错误本质:不是超时,是主动拒绝连接
你遇到的System.Net.Sockets.SocketException (10061)错误,是目标机器主动拒绝了连接请求,而非连接超时。这个错误是TCP协议层直接返回的——当目标主机存在,但指定端口没有程序监听时,会立即返回拒绝响应,不会等待你设置的ConnectTimeout时长。
ConnectTimeout的实际作用
SocketsHttpHandler.ConnectTimeout的作用是:当目标机器无响应(比如主机不存在、网络丢包导致无法收到响应)时,等待TCP连接建立的最大时长。只有当连接请求发出去后,长时间收不到任何响应(既不接受也不拒绝),这个超时设置才会生效。
验证方法
如果要测试ConnectTimeout是否正常工作,可以尝试连接一个不存在的IP地址(比如192.168.99.99:8100),此时系统无法得到目标主机的任何响应,会等待你设置的1分钟后才触发超时错误。
总结
你当前遇到的5秒内报错,是因为目标主机(localhost)存在,但8100端口没有程序在监听,所以TCP直接返回拒绝,和你设置的ConnectTimeout无关。要解决这个问题,需要确认目标端口是否有服务在正常监听,而非调整连接超时设置。
内容的提问来源于stack exchange,提问作者Tacy Nathan
相关产品推荐
相关产品推荐

