我有一个应用程序通过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的最佳做法是什么,例如我应该明确关闭并处理响应流......
答案 0 :(得分: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秒的请求。