在编写下面的代码时,我的代码在GetResponse处锁定。为什么?
try
{
WebRequest myWebRequest = WebRequest.Create(strURL);
WebResponse myWebResponse = myWebRequest.GetResponse();
//more code here
在编写下面的代码时,我的代码在GetResponse处锁定。为什么?
try
{
WebRequest myWebRequest = WebRequest.Create(strURL);
WebResponse myWebResponse = myWebRequest.GetResponse();
//more code here
如果您对同一主机进行了多次请求并且没有处理WebResponse
,通常会出现这种情况。
默认的连接管理设置每次仅允许同时打开2个(或者也许是4个,我记不清了)到相同主机的连接。 如果您确实需要更改此设置,请使用<connectionManagement>
app.config元素 - 但通常您只需处理WebResponse
即可:
try
{
WebRequest myWebRequest = WebRequest.Create(strURL);
using (WebResponse myWebResponse = myWebRequest.GetResponse())
{
//more code here
myWebResponse.GetResponseStream()
,那么在整个流被返回之前,它不会Close()
流吗?...如果我不使用using
语句,那么这是否也意味着myWebResponse
将无法正确处理?...我知道我可以在调用函数中关闭Stream
,但不确定WebResponse
对象会发生什么。 - tinonetic