【问题标题】:View current opened netNamedPipe channels?查看当前打开的 netNamedPipe 频道?
【发布时间】:2011-11-23 04:09:00
【问题描述】:

有什么方法可以确定哪些 netNamedpipe 频道当前处于打开状态?这将帮助我调试我的 WCF 客户端/服务器并确保我正确关闭了我的频道。

这类似于用于网络连接的 netstat 工具,但用于 netNamedPipes。

【问题讨论】:

    标签: c# wcf viewer netnamedpipebinding


    【解决方案1】:

    据我所知,没有工具可以做到这一点。

    您可以使用 Process Explorer 来查找进程所持有的命名管道对象的句柄,但这并不能真正回答您的问题。要识别为 WCF NetNamedPipeBinding 通道创建的管道,您需要知道您在寻找什么。 WCF 管道将在其名称中包含一个 GUID,如下所示:

    \\.\pipe\197ad019-6e5f-48cb-8f88-02ae11dfd8c0
    

    here for more on this

    但是,存在句柄这一事实本身并不能告诉您有关通道状态的任何信息。有一个用于管道连接的 WCF 池机制,因此即使通道正确关闭,这也不能保证管道连接本身已被删除并且句柄已释放(尽管如果您看到一个进程逐渐获取越来越多的句柄会表明频道清理可能存在问题)。

    如果您想确认频道正在被及时清理,我建议您在详细模式下启用 WCF 跟踪:这将准确地告诉您发生了什么。

    【讨论】:

      【解决方案2】:

      您可以使用 Process Explorer 查看进程打开了哪些管道:

      http://technet.microsoft.com/en-us/sysinternals/bb896653

      【讨论】:

      • 在哪里可以查看此程序中的管道?我似乎找不到他们。谢谢。
      • 单击您要检查的进程,选择查看菜单 -> 显示下部窗格。它应该在那里列出。
      【解决方案3】:

      SysInternals 有一个名为 PipeList 的命令。我相信你可以在这里单独下载命令:

      http://technet.microsoft.com/en-us/sysinternals/dd581625

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-15
        • 1970-01-01
        • 1970-01-01
        • 2013-12-15
        相关资源
        最近更新 更多