Установка receiveTimeout для обратных вызовов в WCF?

2

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

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

Где я могу установить это свойство? Везде, где я вижу, что эта проблема затрагивается, похоже, что код WCF был сгенерирован с использованием svcutil.exe. Я этого не делал, и я действительно не хочу начинать с нуля.

Теги:
wcf

1 ответ

3
Лучший ответ

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

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");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню