Просмотр текущих открытых каналов NetNamedPipe? - PullRequest
2 голосов
/ 23 сентября 2011

Есть ли способ определить, какие каналы netNamedpipe открыты в данный момент? Это поможет мне отладить мой клиент-сервер WCF и убедиться, что я правильно закрываю свои каналы.

Это похоже на инструмент netstat для сетевых подключений, но вместо этого для netNamedPipes.

Ответы [ 3 ]

0 голосов
/ 27 сентября 2011

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

Вы можете использовать Process Explorer, чтобы найти дескрипторы объектов именованных каналов, которые удерживает процесс, но это на самом деле не ответит на ваш вопрос.,Чтобы распознать каналы, созданные для каналов WCF NetNamedPipeBinding, вам необходимо знать, что вы ищете.Трубы WCF будут включать GUID в свое имя, выглядя примерно так:

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

См. здесь, чтобы узнать больше об этом .

Однако факт, что ручкаСуществующий не сам по себе ничего не говорит вам о состоянии канала.Существует механизм объединения WCF для трубных соединений, поэтому даже если канал правильно закрыт, это не гарантирует, что само трубное соединение было разорвано и дескриптор освобожден (хотя, если вы увидите процесс, постепенно приобретающий все больше и больше дескрипторов, которыеможет предложить проблему с очисткой канала).

Если вы хотите подтвердить, что каналы очищаются быстро, я бы предложил включить трассировку WCF в подробном режиме: это точно скажет, что происходитна.

0 голосов
/ 23 февраля 2012

SysInternals имеет команду под названием PipeList.Я считаю, что вы можете скачать команду отдельно здесь:

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

0 голосов
/ 23 сентября 2011

Вы можете использовать Process Explorer, чтобы увидеть, какие каналы открыт у процесса:

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

...