У меня двустороннее TCP-соединение между клиентом Silverlight и сервером WCF C #. Сервер постоянно отправляет обновления клиенту. Однако после примерно десяти минут бездействия пользователя любая пользовательская операция, отправляемая на сервер, приводит к исключению, хотя обновления продолжаются успешно.
Учитывая период времени и неактивность на стороне клиента, я предполагаю, что это связано с параметром ReceiveTimeout. Однако когда я пытаюсь установить его на клиенте (см. Ниже), это не исправляется.
CustomBinding binding = new CustomBinding(new BinaryMessageEncodingBindingElement(),
new TcpTransportBindingElement());
binding.ReceiveTimeout = TimeSpan.MaxValue;
EndpointAddress address = new EndpointAddress(testAddress);
testClient = new TestClient(binding, address);
Нужно ли устанавливать это на стороне сервера, а также на стороне клиента или вместо нее?
Если мне нужно установить это на сервере, как бы я это сделал, поскольку я использую OperationContext.Current.GetCallbackChannel<ITestClient>()
для получения интерфейса обратного вызова?
Интерфейс обратного вызова не дает мне доступа к свойствам для установки тайм-аутов, и я не уверен, к чему его привести, чтобы включить это. Я попытался установить его на ServiceHost на стороне сервера, но, похоже, это тоже не помогло.