System.Net.WebException: 操作超时
System.Net.WebException: The operation has timed out
我有一个复杂的代码,在一个部分中,我向 Web 服务发送了一个其余的 Web 请求,并得到了它对其余工作的响应,响应有不同的大小,有时很重,在 VS 上的 IIS Express 上没有没有任何问题,但是在 IIS 上运行时它会抛出 System.Net.WebException:操作已超时。这是我使用的代码:
Dim req As HttpWebRequest = TryCast(WebRequest.Create("http://www.somedomain.com/service.svc"), HttpWebRequest)
Using TryCast(req, IDisposable)
req.Proxy = Nothing
req.ServicePoint.ConnectionLimit = 100
req.ServicePoint.MaxIdleTime = 3000000
req.Method = "POST"
req.Headers("Accept-Encoding") = "gzip,deflate"
req.ContentType = "application/soap+xml; charset=UTF-8"
If compressionRequested = True Then
'' if you want to receive compressed response
req.Headers.Add("Accept-Encoding", "gzip, deflate")
End If
Dim stOut As New StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII)
stOut.Write(xml.ToString)
stOut.Close()
Using resp As HttpWebResponse = DirectCast(req.GetResponse(), HttpWebResponse)
If resp.ContentEncoding = "gzip" Then
Dim st As Stream = resp.GetResponseStream()
If resp.ContentEncoding.ToLower().Contains("gzip") Then
st = New System.IO.Compression.GZipStream(st, System.IO.Compression.CompressionMode.Decompress)
ElseIf resp.ContentEncoding.ToLower().Contains("deflate") Then
st = New System.IO.Compression.DeflateStream(st, System.IO.Compression.CompressionMode.Decompress)
End If
Dim bfst As BufferedStream = New BufferedStream(st)
Using stIn As New StreamReader(bfst, Encoding.[Default])
respXml = stIn.ReadToEnd()
stIn.Close()
End Using
Else
Using stIn As New StreamReader(resp.GetResponseStream())
respXml = stIn.ReadToEnd()
stIn.Close()
End Using
End If
End Using
End Using
也在 web.config 我配置了这个:
<system.net>
<connectionManagement>
<add address="*" maxconnection="100" />
</connectionManagement>
<settings>
<servicePointManager expect100Continue="true" />
</settings>
</system.net>
请问问题出在哪里,如何解决?
通过在此代码之前添加一个 GC.Collect()
,一切正常,
我有一个复杂的代码,在一个部分中,我向 Web 服务发送了一个其余的 Web 请求,并得到了它对其余工作的响应,响应有不同的大小,有时很重,在 VS 上的 IIS Express 上没有没有任何问题,但是在 IIS 上运行时它会抛出 System.Net.WebException:操作已超时。这是我使用的代码:
Dim req As HttpWebRequest = TryCast(WebRequest.Create("http://www.somedomain.com/service.svc"), HttpWebRequest)
Using TryCast(req, IDisposable)
req.Proxy = Nothing
req.ServicePoint.ConnectionLimit = 100
req.ServicePoint.MaxIdleTime = 3000000
req.Method = "POST"
req.Headers("Accept-Encoding") = "gzip,deflate"
req.ContentType = "application/soap+xml; charset=UTF-8"
If compressionRequested = True Then
'' if you want to receive compressed response
req.Headers.Add("Accept-Encoding", "gzip, deflate")
End If
Dim stOut As New StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII)
stOut.Write(xml.ToString)
stOut.Close()
Using resp As HttpWebResponse = DirectCast(req.GetResponse(), HttpWebResponse)
If resp.ContentEncoding = "gzip" Then
Dim st As Stream = resp.GetResponseStream()
If resp.ContentEncoding.ToLower().Contains("gzip") Then
st = New System.IO.Compression.GZipStream(st, System.IO.Compression.CompressionMode.Decompress)
ElseIf resp.ContentEncoding.ToLower().Contains("deflate") Then
st = New System.IO.Compression.DeflateStream(st, System.IO.Compression.CompressionMode.Decompress)
End If
Dim bfst As BufferedStream = New BufferedStream(st)
Using stIn As New StreamReader(bfst, Encoding.[Default])
respXml = stIn.ReadToEnd()
stIn.Close()
End Using
Else
Using stIn As New StreamReader(resp.GetResponseStream())
respXml = stIn.ReadToEnd()
stIn.Close()
End Using
End If
End Using
End Using
也在 web.config 我配置了这个:
<system.net>
<connectionManagement>
<add address="*" maxconnection="100" />
</connectionManagement>
<settings>
<servicePointManager expect100Continue="true" />
</settings>
</system.net>
请问问题出在哪里,如何解决?
通过在此代码之前添加一个 GC.Collect()
,一切正常,