遇到老問題,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 的設定會不會又回來 ??

Post a comment