Обратный вызов именованного канала занимает 10 секунд? - PullRequest
2 голосов
/ 15 января 2012

получил wcf dll с классами клиента и сервера, обертывающими его.

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

что происходит?

получил только простейшую конечную точку NetNamedPipeBinding.

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

что может вызвать такое долгое время.

РЕДАКТИРОВАТЬ: только первый обратный вызов занимает 10 секунд ..

после этого он работает быстро.

Кто-нибудь знает почему?

Ответы [ 4 ]

2 голосов
/ 06 марта 2012

У меня была похожая проблема.В моем случае это помогло:

NetNamedPipeSecurity security = new NetNamedPipeSecurity() { Mode = NetNamedPipeSecurityMode.None };

Передайте этот объект безопасности при создании привязки:

new NetNamedPipeBinding() { Security = security }

Исходная идея взята из здесь Поток касался привязки TCP, но представленное в конце решение оказалось полезным и для именованных каналов в моем случае.

Еще проще сделать:

new NetNamedPipeBinding(NetNamedPipeSecurityMode.None)
1 голос
/ 04 сентября 2015

Случайно я нашел параметр, который значительно повышает производительность первого запроса WCF. Время сократилось с> 10 секунд до ~ 2 секунд.

Установите для свойства TransferMode привязки значение Streamed как на сервере, так и на клиенте:

var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
binding.TransferMode = TransferMode.Streamed;

Затем передайте привязку на стороне сервера AddServiceEndpoint и на стороне клиента конструктора Channelfactory.

0 голосов
/ 07 мая 2015

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

0 голосов
/ 16 января 2012

Как вы размещаете свой сервис?Первый вызов должен будет создать службу, которая может быть медленной для запуска.

При отладке я использую встроенный сервисный хост Studio, и это часто занимает несколько секунд, чтобы разобраться.Не думай, что я когда-либо видел, чтобы это заняло 10 секунд.

...