use*_*402 3 .net c# redirect httpwebrequest
我需要测试大约300个网址,以验证它们是否会导致实际页面或重定向到其他页面.我使用HttpWebRequest在.NET 2.0中编写了一个简单的应用程序来检查它.这是代码片段:
System.Net.HttpWebRequest wr = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create( url );
System.Net.HttpWebResponse resp = (System.Net.HttpWebResponse)wr.GetResponse();
code = resp.StatusDescription;
Run Code Online (Sandbox Code Playgroud)
代码运行得很快并写入文件,我的所有网址都返回状态200 OK.然后我意识到默认情况下GetResponse()遵循重定向.傻我!所以我添加了一行以使其正常工作:
System.Net.HttpWebRequest wr = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create( url );
wr.AllowAutoRedirect = false;
System.Net.HttpWebResponse resp = (System.Net.HttpWebResponse)wr.GetResponse();
code = resp.StatusDescription;
Run Code Online (Sandbox Code Playgroud)
我再次运行该程序并等待......等待...等待...事实证明,对于每个URL我得到一个System.Net.WebException"操作已经超时".很惊讶,我手动检查了URL - 工作正常......我注释掉了AllowAutoRedirect = false行 - 它再次正常工作.取消注释此行 - 超时.什么可能导致这个问题的想法以及如何解决?
通常超时是由于网络响应未被处理.您应该using为您的声明HttpWebResponse:
using (HttpWebResponse resp = (HttpWebResponse)wr.GetResponse())
{
code = resp.StatusDescription;
// ...
}
Run Code Online (Sandbox Code Playgroud)
我们需要做更多的分析来预测这是否肯定是问题......或者你可以尝试一下:)
原因是.NET有一个连接池,如果你没有关闭响应,连接就不会返回到池中(至少在GC完成响应之前).当请求等待连接时,这会导致挂起.
| 归档时间: |
|
| 查看次数: |
3383 次 |
| 最近记录: |