我有一个 WCF 服务,它每分钟运行频繁(1000 多个)出站连接到外部 API。
我的代码经常抛出以下异常,但并不总是显示这是一个 WebException 状态属性为ReceiveFailure的 WebException
发出出站请求的代码如下:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(paramBuilder.ToString());
request.ServicePoint.ConnectionLeaseTimeout = 0;
request.Method = "GET";
request.Timeout = 33000; //33 Second Timeout Is By Design
Stream stream = default(Stream);
HttpWebResponse response = default(HttpWebResponse);
try
{
response = (HttpWebResponse) request.GetResponse();
stream = response.GetResponseStream();
reader = new StreamReader(stream,Encoding.UTF8);
string str = reader.ReadToEnd();
return str;
}
catch (WebException exception)
{
//Handle WebException
}
catch (Exception exception)
{
//Handle Exception
}
finally
{
if (reader != null)
reader.Dispose();
if (response != null)
response.Close();
if (stream != null)
stream.Dispose();
}
异常堆栈跟踪显示异常是由 GetResponse() 引起的。
我偶尔收到 WebException -ReceiveFailure 可能导致这种情况发生的原因。
我已经为此状态参考了 MSDN 文档,但这对我没有帮助。