【发布时间】:2011-11-23 04:09:00
【问题描述】:
有什么方法可以确定哪些 netNamedpipe 频道当前处于打开状态?这将帮助我调试我的 WCF 客户端/服务器并确保我正确关闭了我的频道。
这类似于用于网络连接的 netstat 工具,但用于 netNamedPipes。
【问题讨论】:
标签: c# wcf viewer netnamedpipebinding
有什么方法可以确定哪些 netNamedpipe 频道当前处于打开状态?这将帮助我调试我的 WCF 客户端/服务器并确保我正确关闭了我的频道。
这类似于用于网络连接的 netstat 工具,但用于 netNamedPipes。
【问题讨论】:
标签: c# wcf viewer netnamedpipebinding
据我所知,没有工具可以做到这一点。
您可以使用 Process Explorer 来查找进程所持有的命名管道对象的句柄,但这并不能真正回答您的问题。要识别为 WCF NetNamedPipeBinding 通道创建的管道,您需要知道您在寻找什么。 WCF 管道将在其名称中包含一个 GUID,如下所示:
\\.\pipe\197ad019-6e5f-48cb-8f88-02ae11dfd8c0
但是,存在句柄这一事实本身并不能告诉您有关通道状态的任何信息。有一个用于管道连接的 WCF 池机制,因此即使通道正确关闭,这也不能保证管道连接本身已被删除并且句柄已释放(尽管如果您看到一个进程逐渐获取越来越多的句柄会表明频道清理可能存在问题)。
如果您想确认频道正在被及时清理,我建议您在详细模式下启用 WCF 跟踪:这将准确地告诉您发生了什么。
【讨论】:
您可以使用 Process Explorer 查看进程打开了哪些管道:
【讨论】:
SysInternals 有一个名为 PipeList 的命令。我相信你可以在这里单独下载命令:
【讨论】: