-1

我有一个应用程序通过 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 的最佳实践是什么,例如我应该明确关闭并处理响应流...

4

1 回答 1

0

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

您可以在 HTTPWebRequest 对象的 GetResponse() 方法之前设置 .Timeout 属性,以延长它正式超时之前的时间,看看会发生什么:

myHttpWebRequest.Timeout = 10; //In milliseconds

如果做不到这一点,如果您以 NETWORK SERVICE 作为主机帐户运行 ASP.NET,则可以尝试将其添加到配置文件中:

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

如果不这样做,您的应用程序将无法访问代理设置。.NET 搜索它,找不到它,然后通过默认连接。这将导致异常,但执行将继续。它可以解释为什么它总是 21 秒进入请求。

在此处阅读完整的详细信息

于 2009-09-02T10:27:12.580 回答