Узнайте, что ломает мой канал WCF
У меня есть два приложения, общение через WCF. Связь отлично работает на наших компьютерах разработки, но кажется, что на одном из наших клиентов, это не так. У нас точно такая же версия установки установлена на их конце. Эти два приложения (в данном случае) установлены на одном компьютере, но все еще используют связь TCP.
Я проверил в наших журналах (у нас Log4Net регистрирует все исключения каждый раз, когда мы звоним в службу).
Во-первых, на сервере появляется ошибка при попытке отправить сообщение с помощью обратного вызова:
System.TimeoutException: эта операция запроса, отправленная на http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous, не получила ответ в течение настроенного времени ожидания (00:00:29.9779844). Время, выделенное для этой операции, могло быть частью более длительного времени ожидания. Это может быть связано с тем, что служба все еще обрабатывает операцию или службе не удалось отправить ответное сообщение. Пожалуйста, подумайте об увеличении времени ожидания операции (путем преобразования канала / прокси в IContextChannel и установки свойства OperationTimeout) и убедитесь, что служба может подключиться к клиенту.
Затем на клиенте, когда сервер завершил попытку повторной отправки сообщения, мы имеем следующую ошибку:
System.TimeoutException: эта операция запроса отправлена net.tcp://192.168.0.144:55000/someInstanceName/IMyService не получила ответ в течение настроенного времени ожидания (00:00:29.9994997). Время, выделенное для этой операции, могло быть частью более длительного времени ожидания. Это может быть связано с тем, что служба все еще обрабатывает операцию или службе не удалось отправить ответное сообщение. Пожалуйста, подумайте об увеличении времени ожидания операции (путем преобразования канала / прокси в IContextChannel и установки свойства OperationTimeout) и убедитесь, что служба может подключиться к клиенту.
Я не думаю, что это связано с тайм-аутом, потому что у нас есть ошибка на сервере через 7 секунд после того, как пользователь выполнил какую-то операцию в графическом интерфейсе, которая должна инициировать эту связь, и тайм-аут установлен на 30 секунд.
Я не могу воспроизвести его локально (и клиент может заставить его работать после нескольких испытаний), как мне приступить к его устранению, какие инструменты позволят мне лучше понять, что происходит?
редактировать
Используя журнал в файл svclog, я получил больше информации.
- Первое: кажется, что первый тайм-аут, который взорвется на клиенте и сервере, не сможет связаться с клиентом
Я нашел кое-что другое: я не уверен, как это интерпретировать, но для одного "Действия" у меня действительно много событий. Меня беспокоит то, что между некоторыми сообщениями возникают большие скачки, но я не уверен, что понимаю почему.
Кроме того, я не уверен, что понимаю, почему так много сообщений для одного запроса. WCF разбивает запрос на несколько запросов? Если есть период, когда он останавливается, а затем продолжается, что может спровоцировать его?