0
Установка receiveTimeout для обратных вызовов в WCF?
Я написал в основном рабочий фрагмент кода с использованием WCF, где клиент подписывается на сервер, а сервер отправляет данные клиенту.
Я оставил его на некоторое время, попытался передать некоторые данные клиенту и получил исключение, в котором говорилось, что мне нужно установить свойство receiveTimeout.
Где я могу установить это свойство? Везде, где я вижу, что эта проблема решена, похоже, что код WCF был сгенерирован с помощью svcutil.exe. Я этого не делал и действительно не хочу начинать с нуля.
Ответов (1)1
Решение
0
Я узнал, как это сделать, при создании клиентской части канала вы должны явно установить тайм-аут привязки.
NetNamedPipeBinding binding = new NetNamedPipeBinding();
binding.ReceiveTimeout = new TimeSpan(1,0,0);
binding.SendTimeout = new TimeSpan(1,0,0);
DuplexChannelFactory<IVdnServer> pipeFactory = new
DuplexChannelFactory<IVdnServer>(_subscriber, binding,
new EndpointAddress("net.pipe://localhost/PipeService"));
И когда вы создаете серверную часть конечной точки службы, вам также необходимо явно установить время ожидания.
NetNamedPipeBinding binding = new NetNamedPipeBinding();
binding.ReceiveTimeout = new TimeSpan(1,0,0);
binding.SendTimeout = new TimeSpan(1,0,0);
_host.AddServiceEndpoint(typeof(IVdnServer),binding , "PipeReverse");