System.Net.Sockets.SocketException

System.Net.Sockets.SocketException,.net,system.net.webexception,.net,System.net.webexception,我有一个应用程序,它通过http(s)在外部资源上发出同步请求。每隔几周我就会有以下例外 Exception: System.Net.WebException - Message: Unable to connect to the remote server 内部异常:System.Net.Sockets.SocketException-消息:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而建立的连接失败 困扰我的是,我的跟踪日志显示,对于这个异常的每个实例,它都

我有一个应用程序,它通过http(s)在外部资源上发出同步请求。每隔几周我就会有以下例外

Exception: System.Net.WebException - Message: Unable to connect to the remote server
内部异常:System.Net.Sockets.SocketException-消息:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而建立的连接失败

困扰我的是,我的跟踪日志显示,对于这个异常的每个实例,它都被抛出到请求中“21秒”

以前有人见过这样的行为吗?有解决办法吗? System.Net.HttpWebRequest命名空间中是否存在任何已知问题?
使用System.Net.HttpWebRequest的最佳做法是什么?例如,我是否应该明确关闭并处理响应流…

如果您正在访问外部资源,答案很可能是这些资源不可用(他们的服务器已关闭、您的连接已关闭、他们的连接已关闭等)

您可以在HTTPWebRequest对象的GetResponse()方法之前设置.Timeout属性,以延长其正式超时之前的时间,并查看发生的情况:

myHttpWebRequest.Timeout = 10; //In milliseconds
如果此操作失败,您可以尝试将其添加到配置文件中,前提是您正在运行的ASP.NET(以网络服务作为主机帐户):

<configuration >
  <system.net>
    <defaultProxy>
      <proxy bypassonlocal="true" usesystemdefault="false" />
    </defaultProxy>
</system.net>
</configuration>

否则,应用程序将无法访问代理设置。NET搜索它,找不到它,然后通过默认连接。这将导致异常,但执行将继续。这也许可以解释为什么每次请求都需要21秒


.

这不是超时。默认超时为100秒。我的请求正在到达正在处理的远程服务器,一切正常,但我收到了上述异常?更新了我的答案,希望能有所帮助。