В настоящее время в одном из наших приложений я вижу большие задержки при выполнении первого HTTP WebRecest. По нашим журналам есть отставание в 30-60 секунд. Он блокирует на HttpWebRequest.BeginGetResponseHttpWebRequest.BeginGetResponse блокирует 30-60 секунд
Вот цитата из MSDN:
Метод BeginGetRequestStream требует некоторых синхронных задач настройки для завершения (разрешение DNS, прокси обнаружения и TCP сокет подключения, например,) до того, как этот метод станет асинхронным. Как результат , этот метод никогда не следует вызывать в потоке пользовательского интерфейса (UI) , потому что это может занять некоторое время, как правило, несколько секунд. В в некоторых средах, где сценарии веб-прокси не настроены , это может занять 60 секунд или более. Значение по умолчанию для атрибута загрузки в элементе файла конфигурации составляет за одну минуту, на которую приходится большая часть потенциальной задержки времени.
Я понимаю, что есть разрешение DNS, определение прокси и другие необходимые вещи. Но 30-60 секунд слишком длинны. Когда я ввожу тот же URL-адрес в любой браузер, я сразу же получаю страницу. Когда я разрешаю руководство по DNS, также нет задержки. Все параллельные запросы к тому же URI не блокируются. Когда я перезапускаю приложение, первый запрос блокируется снова за мин. 30 секунд.
Это известная проблема? Есть ли ошибка? Мы видим это на разных машинах, поэтому я не думаю, что моя машина для разработчиков - проблема.
Вот несколько примеров кода:
private void TestWebRequest()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://matrix.ag-software.de/http-bind");
request.ContentType = "text/xml; charset=utf-8";
request.Method = "POST";
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
}
private void GetRequestStreamCallback(IAsyncResult result)
{
//
}
обновление: Это должно быть проблема с моим Windows 7 Установка. Я тестировал еще 2 машины и не могу вызвать такую же проблему. Я видел лог-файлы от клиентов с точно такими же проблемами. Кажется, что это происходит в некоторых условиях на некоторых машинах.
Это таргетинг на интранет или интернет-адрес? – Justin
Я добавил несколько примеров кода. У меня проблема с внутренней и внешней. Возможно, это единственная проблема с этой конкретной реализацией сервера и может быть решена с помощью некоторых специальных настроек. На MONO у нас нет этой проблемы. В настоящее время я отлаживаю полную платформу .NET 3.5.Проблема не существует во всех версиях рамок. Например, Silverlight работает нормально, но использует стек браузера. – Alex
Вы пробовали, если против каких-либо других сайтов, таких как google или stackoverflow? Существует ли это тогда? – Justin