.net удаленное взаимодействие останавливается каждые 100 секунд - PullRequest
1 голос
/ 17 ноября 2008

У нас очень странная проблема: одно из наших приложений постоянно запрашивает сервер с помощью удаленного взаимодействия .net, и каждые 100 секунд приложение на короткое время прекращает запрашивать, а затем возобновляет работу. Проблема на клиенте, а не на сервере, поскольку приложения фактически запрашивают несколько серверов одновременно и перестают получать данные от всех из них в одно и то же время.

Ответы [ 3 ]

3 голосов
/ 17 ноября 2008

100 секунд - это раздача, так как это время ожидания по умолчанию для веб-запроса в .Net.

В прошлом я видел, что PSI (интерфейс сервера проекта в Microsoft Project) не переопределяет время ожидания, поэтому было применено значение по умолчанию, равное 100 секундам, и оно будет прерывать любой разговор с ним дольше, чем это время.

У вас есть доступ ко всему коду, и вы уверены, что установили тайм-ауты, где это применимо, чтобы любые значения по умолчанию не применялись без вашего ведома?

0 голосов
/ 17 ноября 2008

Как кодируется приложение для реализации непрерывных запросов? Это в непрерывном цикле? или цикл с Thread.Sleep? или это по таймеру?,

Сначала было бы полезно определить, выполняет ли ваша система этот «триггер» в вашем коде, когда вы ожидаете, или если это так, и сервер удаленного взаимодействия не отвечает ... так, ...

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

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

... и да, просто мысль, (я не знаю, как вы это закодировали ...), но если вы используете отдельный поток в клиенте для выдачи запроса на удаленное взаимодействие, и канал работает зарегистрированный и незарегистрированный в этом отдельном потоке, убедитесь, что вы не конфликтуете с запросами, потому что вы не можете зарегистрировать один и тот же порт дважды на одном компьютере одновременно ... (хотя это, вероятно, должно было вызвать исключение в вашем клиенте, если бы это было проблемой)

0 голосов
/ 17 ноября 2008

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

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

  1. Определите, является ли клиент или сервер фактически остановленным. Если у вас возникли проблемы с определением этого, попробуйте установить фильтр пакетов и отслеживать трафик, чтобы увидеть, кто отправил последние данные. Скорее всего, вы не сможете прочитать двоичные данные, но, по крайней мере, вы почувствуете, кто отстает.
  2. Как только вы выясните, является ли задержка клиентом или сервером, попытайтесь отладить приложение и получить точку останова, где происходит зависание. Это должно дать вам достаточно деталей, чтобы помочь отследить проблему. Или, по крайней мере, задайте более определенный вопрос о SO.
...