Я работаю над веб-приложением, которое работает с ASP.Net 3.5
. Где-то в приложении я выполняю вызовы во внешнюю систему.Этот вызов заключается в загрузке строки с определенного URL:
string targetUrl = BuildMyUrl();
WebClient wc = new WebClient();
string data = wc.DownloadString(targetUrl);
. Этот код довольно хорошо работает с приемлемым временем ответа (менее 500 мс).
Однако в определенных случаях это время ответаболее 15 секунд.Я могу воспроизвести это поведение и ясно видеть, сколько времени находится на вызове DownloadString
.
Я не понимаю, почему это происходит в моем сценарии .
Вы скажете: «Эй, это целевая система, которая работает медленно».Но я не смог воспроизвести поведение вне моего приложения (я создал небольшое консольное приложение, которое изолирует неисправный код. Никогда не возникало проблем).
Я не знаю, где искать сейчаспонять проблему.Что может привести к тому, что данные простой загрузки будут слишком длинными?
К вашему сведению: целевой системой является служба аутентификации.Целевой URL имеет вид:
http S : // mysystem / validate? Ticket = XXXYYY
Возможно, проблема в протоколе https.
Может ли использование класса WebClient под IIS изменить поведение WebClient?
[Редактировать] Я пытался:
- Чтобы явно установить
Proxy
свойство объекта WebClient равно нулю Я заменил вызов DownloadData следующим кодом:
var req = (HttpWebRequest) WebRequest.CreateDefault (new Uri (targetUrl));using (var response = (HttpWebResponse) req.GetResponse ()) {using (var sr = новый StreamReader (response.GetResponseStream ())) {data = sr.ReadToEnd ();}}
Ни один из этих тестов не был успешным.