可以理解,关闭进程正在侦听的端口可能会使进程无效,因此最好杀死进程。但是,我有一个场景,当它尝试关闭端口时进程挂起。除了重新启动服务器之外,没有什么可以终止进程。内存转储中的堆栈跟踪是:
0012f230 7c82845c [NDirectMethodFrameStandalone: 0012f230] System.Net.UnsafeNclNativeMethods+SafeNetHandles.CloseHandle(IntPtr)
0012f240 7a567a78 System.Net.SafeCloseHandle.ReleaseHandle()
0012f24c 7928faa2 System.Runtime.InteropServices.CriticalHandle.Cleanup()
0012f25c 7928fa45 System.Runtime.InteropServices.CriticalHandle.Dispose(Boolean)
0012f260 7a59d907 System.Net.HttpListener.Stop()
直接杀死进程而不尝试正常关闭似乎没有更好的效果(相同的结果 - 进程挂起并且无法终止)。
问题是:有没有办法从流程外强制关闭此方案中的端口?
我读过的所有内容都表明关闭端口的最佳方法是终止监听它的过程,但这显然不适用于我的情况。