【茶包射手筆記】清除 Windows TCP Port 保留區段
| | | 5 | |
遇到老問題,Visual Studio 啟動 IISExpress 跑 ASP.NET Core 時冒出 Failed to register URL "http://localhost:59683/" for site "MyWeb" application "/". Error description: The process cannot access the file because it is being used by another process. (0x80070020)。,使用 netsh interface ipv4 show excludedportrange protocol=tcp 檢查,59683 確實踩中了 TCP Port 保留區:

但,密密麻麻 32 塊保留區(每段 100 Port)也太誇張了! 這樣子豈不一天到晚會踩到雷?爬文得知似乎是 Hyper-V 搞鬼,與 Windows NAT 服務有關,按照建議重啟 WinNAT 服務,net stop winnat 再 net start winnat,50000 以上的保留區段就只剩下 50000 - 50059。

未來再遇 TCP Port 被大量佔用,這招會比改 Port 方便一些。
Tips of how to clear reserved TCP port ranges in Windows 10.
Comments
# by Harry Tu
想請問這個方法是否會影響Hyper-V的NAT運作?
# by Jeffrey
to Harry Tu, 沒查到確實的副作用說法,我猜最壞狀況是執行中的 VM/Container 網路中斷需要重新啟動。(前題是你恰巧用到被它保留並在使用中的 Port,個人覺得機率頗低)
# by nolem
請問這算hyper-v 或是winnat bug 嗎?port占用成這樣~有點扯ㄟ~
# by Jerry
不知道重新開機之後,這些擋 port 的設定會不會又回來 ??
# by nobody
我用win11 無法停止也無法啟動 PS > net stop winnat Windows NAT Driver 服務正在停止........ Windows NAT Driver 服務無法停止。 PS > net start winnat 服務正在啟動或停止中,請稍候片刻後再試一次。