命名管道回调需要10秒

本文关键字:10秒 回调 管道 | 更新日期: 2023-09-27 18:20:31

得到了wcf dll,其中包含客户端和服务器类。

当我的服务器使用回调时,我的客户端需要超过10秒才能得到它。

发生了什么事?

只得到最简单的NetNamedPipeBinding端点。

有很多代码,所以我不知道该在这里粘贴什么。

是什么原因导致这么长时间。

编辑:仅第一次回调需要10秒。。

在这之后,它工作得很快。

谁知道为什么?

命名管道回调需要10秒

我也遇到过类似的问题。这对我的情况有所帮助:

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

创建绑定时传递此安全对象:

new NetNamedPipeBinding() { Security = security }

最初的想法就是从这里开始的。线程是关于TCP绑定的,但最后给出的解决方案似乎对命名管道也有帮助。

更简单的做法是:

new NetNamedPipeBinding(NetNamedPipeSecurityMode.None)

没有任何帮助。我最后添加了一个假的呼叫装饰器。其在系统启动时发送第一个调用。

我偶然发现了一个设置,它大大提高了第一个WCF请求的性能。时间从>10秒下降到约2秒。

在服务器和客户端上将绑定的TransferMode属性设置为Streamed:

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

然后将绑定传递到AddServiceEndpoint服务器端和Channelfactory构造函数客户端。

您是如何托管服务的?第一个调用需要创建启动速度较慢的服务。

调试时,我使用Studio的内置服务主机,这通常需要几秒钟的时间来自行解决。我想我从来没有见过它需要10秒。