几个月来,我一直没有运行我们开发的.NET应用程序,该应用程序上一次运行良好。同时,我已经将计算机更新为Windows 10 Pro 1809(以及在家中)。
今天,我尝试运行它,但它的运行不正常。在代码尝试在可配置端口(默认为2000
)上启动TCP服务器之后,我对其进行了调试并将其范围缩小为一个异常。
以下是例外:
System.Net.Sockets.SocketException (0x80004005): An attempt was made to access a socket in a way forbidden by its access permissions
在执行以下代码时将其引发:
listener = new TcpListener("127.0.0.1", 2000);
listener.Start();
我没有进行正常的诊断步骤:
所以我很快在PowerShell脚本中对它进行了测试:
$port = 2000
$listener = new-object System.Net.Sockets.TcpListener ("127.0.0.1", $port)
try
{
$listener.start()
Write-Output "Successfully opened port $port"
}
catch
{
Write-Error $_
}
finally
{
$listener.Stop()
}
我得到几乎相同的例外:
Exception calling "Start" with "0" argument(s): "An attempt was made to access a socket in a
way forbidden by its access permissions"
下一步,我决定将端口更改为3000
,它可以正常工作。
接下来,我将脚本修改为从1
到2500
的端口之间循环,并遇到一堆失败,包括从1657
到2156
和{{1} }到2179
。
下一步该去哪里寻找根本原因? Windows可以使用什么机制拒绝绑定(?)尝试?
更新
尝试过此C#应用程序,结果相同:
2279