c# - Why does WebRequest timeout always on the first request, but never on any subsequent ones -
c# - Why does WebRequest timeout always on the first request, but never on any subsequent ones -
having issue, calling webrequest.getresponse() hangs , times out on first call, after first call, works fine.
seek { webrequest myhttpwebrequest = webrequest.create(@"http://192.168.x.x/"); // sends httpwebrequest , waits response. myhttpwebrequest.timeout = 1000; webresponse myhttpwebresponse = myhttpwebrequest.getresponse(); } catch(exception e) { console.writeline("failure 1"); } seek { webrequest myhttpwebrequest = webrequest.create(@"http://192.168.x.x/"); // sends httpwebrequest , waits response. myhttpwebrequest.timeout = 1000; webresponse myhttpwebresponse = myhttpwebrequest.getresponse(); } catch(exception e) { console.writeline("failure 2"); } seek { webrequest myhttpwebrequest = webrequest.create(@"http://192.168.x.x/"); // sends httpwebrequest , waits response. myhttpwebrequest.timeout = 1000; webresponse myhttpwebresponse = myhttpwebrequest.getresponse(); } catch(exception e) { console.writeline("failure 3"); } using code in console application, receive failure 1. running under debugger or not. i've done 1000 loop, , fails on first one, never other ones. in fact, reading logs of web server, never receives first request. missing here?
edit: i've realised reply below fit exact opposite situation, first request works others don't. however, it's still of import - really should disposing of responses. useful if when study error, study exception message...
to work out what's going on here, should utilize wireshark can see whether problem request beingness made not responded to, or whether it's not beingness made.
i wonder whether problem actually it's resolving proxy, or that... , there's plenty time resolve before second request times out. seek increasing timeouts. again, should visible via wireshark.
you're not disposing of web response, connection pool sec request going time out waiting connection back.
put webresponse part in using statement , you'll find works fine:
using (webresponse myhttpwebresponse = myhttpwebrequest.getresponse()) { } that's assuming you'd do response, of course. otherwise write:
myhttpwebrequest.getresponse().dispose(); :)
c# .net httpwebrequest webrequest
Comments
Post a Comment