我有一个使用OWIN自托管(WebApp.Start)侦听端口80的Windows服务。我想使用PowerShell脚本以编程方式找到该服务。我有以下PowerShell脚本:
netstat -noab | Select-String ":80 " -Context(1,0) `
| Where { $_.Context.PreContext[0].Trim().StartsWith("[") } `
| ForEach { ($_.Context.PreContext[0].Substring(2) -split ']')[0] }
但是这只会产生lsass.exe。
如果我运行netstat -noa,我会得到更多结果,但是当我包含"Can not obtain ownership information"
选项
-b
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 10.100.18.158:80 10.100.25.102:42967 ESTABLISHED 4
TCP 10.100.18.158:80 10.100.25.102:42968 ESTABLISHED 4
TCP 10.100.18.158:80 10.100.25.102:42974 ESTABLISHED 4
TCP 10.100.18.158:80 10.100.28.8:44763 ESTABLISHED 4
TCP 10.100.18.158:80 10.100.28.8:44764 ESTABLISHED 4
TCP 10.100.18.158:80 10.100.28.8:44765 ESTABLISHED 4
TCP 10.100.18.158:80 10.100.28.8:47400 ESTABLISHED 4
TCP [::]:80 [::]:0 LISTENING 4
我认识到这可能是因为OWIN在内部使用HTTP侦听器的方式。
使用端口可靠地确定流程/服务的任何方法?
答案 0 :(得分:2)
通常这表示它是HTTP.sys,
我在这里回答了类似的问题: Cannot bind to port 80, Microsoft-HTTPAPI/2.0 Lock
但总结是你可以使用 找出原因的最佳方法是从提升的命令提示符运行以下命令,它将列出所有注册,包括使用它们的进程ID:
netsh http show servicestate view=requestq verbose=yes
Request queue name: Request queue is unnamed.
Version: 2.0
State: Active
Request queue 503 verbosity level: Basic
Max requests: 1000
Number of active processes attached: 1
**Process IDs**:
1120
URL groups:...
并在那里找到正确的预订,有点像:HTTP:// LOCALHOST:80 /或LOCALHOST:80,或*:80
IIS将使用应用程序池名称向请求队列名称注册预留,以便您轻松找出使用它的人。