命名管道回调需要10秒钟?

时间:2012-01-15 08:39:20

标签: c# wcf named-pipes

将wcf dll与客户端和服务器类包装起来。

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

发生了什么事?

只有最简单的NetNamedPipeBinding端点。

获得了大量代码,因此我不确定要在此处粘贴什么。

什么会导致这么长时间。

编辑: 只有第一次回调需要10秒..

之后它可以快速运作。

任何人都知道为什么?

4 个答案:

答案 0 :(得分:2)

我有类似的问题。这有助于我的情况:

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

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

new NetNamedPipeBinding() { Security = security }

最初的想法来自here。该线程是关于TCP绑定的,但最终提出的解决方案在我的案例中似乎对命名管道也有帮助。

更简单的是:

new NetNamedPipeBinding(NetNamedPipeSecurityMode.None)

答案 1 :(得分:1)

无意中,我发现了一个可以大大提高第一个WCF请求性能的设置。时间从>开始10秒到2秒。

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

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

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

答案 2 :(得分:0)

您是如何托管服务的?第一次调用需要创建启动缓慢的服务。

调试时我使用Studio的内置服务主机,这通常需要几秒钟才能自行排序。不要以为我曾经看过它花了10秒钟。

答案 3 :(得分:0)

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