2012-03-06 2 views
2

Я работаю над веб-приложением, которое работает с ASP.Net 3.5Slow WebClient.DownloadString?

Где-то в приложении я звоню во внешнюю систему. Этот вызов состоит по загрузке строки из определенного URL:

string targetUrl = BuildMyUrl(); 
WebClient wc = new WebClient(); 
string data = wc.DownloadString(targetUrl); 

Этот код работает довольно хорошо с приемлемым временем отклика (до 500 мс).

Однако в конкретных случаях это время отклика более 15 секунд. Я могу воспроизвести поведение, и я могу ясно видеть, что долгое время находится на вызове DownloadString.

Я не понимаю, почему это происходит в моем сценарии.

Вы скажете: «Эй, это целевая система, которая медленная». Но я не смог воспроизвести поведение вне моего приложения (я создал небольшое консольное приложение, которое изолирует код ошибки. Никогда не получайте никаких проблем).

Я не знаю, где искать сейчас, чтобы понять проблему. Что может привести к тому, что данные простой загрузки будут длинными?

FYI: целевая система является службой аутентификации. Целевой URL имеет вид:

HTTP S: // mysystem/проверить билет = XXXYYY

Может быть, протокол HTTPS проблема?.

Может ли использование класса WebClient в IIS изменять поведение WebClient?

[Edit] Я пробовал:

  • Чтобы явно установить Proxy свойство объекта WebClient обнулить
  • Я заменил вызов DownloadData по этому коду:

    вар req = (HttpWebRequest) WebRequest.CreateDefault (новый Uri (targetUrl)); используя (ответ вара = (HttpWebResponse) req.GetResponse()) { использования (вар ср = новый StreamReader (response.GetResponseStream())) { данные = sr.ReadToEnd(); }}

Ни один из этого теста не были успешными.

+0

Это происходит в условиях тяжелой нагрузки? –

+0

@FelicePollano: no. Это происходит в конкретном случае, I.E. после выписки, затем снова войдите в систему аутентификации.Но только из пользовательского веб-приложения (не из приложения тестовой консоли). –

+0

WebClient очень медленный. Я бы обычно пошел на простой подход к сокетам, но это было бы очень сложно сделать для https. – CodingBarfield

ответ

0

Задержка была вызвана таймаутом проверки сертификата. Один из эмитентов в цепочке был неправильно развернут на клиентском сервере.

0

Попробуйте использовать Fiddler или какой-либо интегрированный сетевой анализатор внутри браузеров Chrome/FF для просмотра запросов/ответов HTTPS и их заголовков.

Смежные вопросы