Установка receiveTimeout для обратных вызовов в WCF? - PullRequest
2 голосов
/ 27 февраля 2009

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

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

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

1 Ответ

3 голосов
/ 27 февраля 2009

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

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...