我正在开发一个使用ASP.Net 3.5运行的Web应用程序
在应用程序的某个地方,我正在调用外部系统。此调用包括从特定URL下载字符串:
string targetUrl = BuildMyUrl();
WebClient wc = new WebClient();
string data = wc.DownloadString(targetUrl);
此代码在可接受的响应时间(低于500毫秒)下运行良好。
但是,在特定情况下,此响应时间超过15秒。我可以重现这种行为,我可以清楚地看到DownloadString
电话上有很长时间。
我不明白为什么会出现这种情况。
你会说:“嘿,这是目标系统很慢”。但是我无法重现我的应用程序之外的行为(我已经构建了一个小型控制台应用程序来隔离错误代码。永远不会遇到任何问题。)
我现在不知道在哪里了解这个问题。什么会导致简单的下载数据变得冗长?
仅供参考:目标系统是身份验证服务。目标网址是实物:
HTTP 取值:// mysystem /验证票= XXXYYY
也许https协议是个问题。
在IIS下使用WebClient类是否可以改变WebClient的行为?
[编辑]我试过了:
Proxy
属性显式设置为null 我已用此代码替换了DownloadData调用:
var req =(HttpWebRequest)WebRequest.CreateDefault(new Uri(targetUrl)); 使用(var response =(HttpWebResponse)req.GetResponse()) { 使用(var sr = new StreamReader(response.GetResponseStream())) { data = sr.ReadToEnd(); } }
这项测试都没有成功。
答案 0 :(得分:0)
尝试在Chrome / FF浏览器中使用Fiddler或某些集成网络分析器查看HTTPS请求/响应及其标题。
答案 1 :(得分:0)
延迟是由证书验证超时引起的。链中的一个发行者未在客户端服务器中正确部署。