我正在开发一个使用 ASP.Net 3.5 运行的 Web 应用程序
在应用程序的某个地方,我正在调用外部系统。此调用包括从特定 url 下载字符串:
string targetUrl = BuildMyUrl();
WebClient wc = new WebClient();
string data = wc.DownloadString(targetUrl);
该代码运行良好,响应时间可接受(低于 500 毫秒)。
但是,在特定情况下,此响应时间会超过 15 秒。我可以重现该行为,并且我可以清楚地看到时间很长DownloadString
call.
我不明白为什么在我的场景中会发生这种情况.
你会说:“嘿,这是目标系统慢”。但我无法在应用程序之外重现该行为(我构建了一个小型控制台应用程序来隔离错误代码。永远不会遇到任何问题)。
我不知道现在该去哪里了解这个问题。什么会导致简单的下载数据过长?
仅供参考:目标系统是一个身份验证服务。目标网址是这样的:
httpS//mysystem/validate?ticket=XXXYYY
也许 https 协议是问题所在。
在 IIS 下使用 WebClient 类是否可以改变 WebClient 的行为?
[编辑]我尝试过:
- 显式设置
Proxy
WebClient 对象的属性为 null
-
我已用以下代码替换了 DownloadData 调用:
var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(targetUrl));
使用 (var response = (HttpWebResponse)req.GetResponse())
{
使用 (var sr = new StreamReader(response.GetResponseStream()))
{
数据= sr.ReadToEnd();
}
}
这些测试都没有成功。
尝试使用Fiddler http://www.fiddler2.com/fiddler2/或 Chrome/FF 浏览器内的一些集成网络分析器来查看 HTTPS 请求/响应及其标头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)