2013-09-28 2 views
0

Я использую WebRequest в клиенте для использования веб-службы в Интернете. Каждый запрос запускается в отдельном потоке.WebRequest в службе windows

Он хорошо работает при размещении клиента в IIS. Но в большинстве запросов будет вычислена ошибка времени, если клиент размещен в службе Windows.

Когда я пытался отладить проблему с помощью Fiddler, то WebRequest работал хорошо, как весь трафик прошел через 127.0.0.1:8888

Без Скрипач, трафик идет к Интернету непосредственно через произвольный порт, и тайм-аут проблема снова попадает.

Служба Windows работает под учетной записью «Локальная система».

Почему я получаю тайм-аут, если клиент находится в службе Windows без использования прокси?

Обновление: Мой первоначальный вопрос был не ясен. Запросы принимаются одновременно (или с очень коротким интервалом). Это связано с лимитом соединения в классе ServicePoint. По умолчанию для одного и того же внешнего адресата разрешено только 2 подключения. Если пункт назначения является локальным, предел будет значением int.Max. Вот почему скрипач может магически исправить проблему с прокси-сервером. Поэтому я вручную устанавливаю DefaultConnectionLimit равным 100, а запросы на провод.

Adjusting HttpWebRequest Connection Timeout in C#

ответ

1

Наиболее распространенным источником проблем, является «волшебным» фиксируется запустив Скрипач, когда ваш код .NET не удается вызвать Close() на объект, возвращаемый GetResponseStream(). См. http://www.telerik.com/automated-testing-tools/blog/13-02-28/help-running-fiddler-fixes-my-app.aspx для более подробной информации.

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