.Net Core启动程序报错:以一种访问权限不允许的方式做了一个访问套接字的尝试
2024-01-26
问题
启动.net core程序报错:System .Net .Sockets .SocketException 10013 以一种访问权限不允许的方式做了一个访问套接字的尝试
一般是端口被占用或者指定端口在排除范围之内,对症下药,我们需要换个端口、处理端口占用问题或者把端口从排除范围中删除即可
一招制敌:重启计算机(不太建议),因为重启计算机后,端口排除排除范围会初始化,端口也可能没有被占用
如何解决
处理端口占用
首先我们在cmd输入以下命令,查看端口(54000)是否被占用
xxxxxxxxxx
netstat -ano | findstr 54000
如果端口被占用,则可以在任务管理器中的详细信息根据PID查到对应的程序,右键将其结束任务即可
检查端口排除范围
如果端口没有被占用,接下来我们要查看指定端口是否在端口排除范围之内(端口是否被排除),如下图我们发现端口54000被排除了
xxxxxxxxxx
netsh interface ipv4 show excludedportrange protocol=tcp
接下来我们只需要重启winnat,再查询端口是否被排除即可(是的,这里只需要重启winnat即可,不用手动删除排除范围也不用重启计算机)
如果端口还在排除范围的话就多重启winnat几次,或者手动删除排除范围即可
xxxxxxxxxx
# 重启winnat
net stop winnat
net start winnat
netsh interface ipv4 show excludedportrange protocol=tcp
接着重新启动项目,成功运行
添加/删除端口排除范围
至于手动添加/删除端口排除范围,可以参照以下写法。不过我没有测试成功,先记个Todo吧
xxxxxxxxxx
net stop winnat
# 添加端口排除范围,从5600开始往后10个端口
netsh int ip add excludedportrange protocol=tcp numberofports=10 startport=5600
net start winnat
netsh interface ipv4 show excludedportrange protocol=tcp
netsh int ip reset
# 重启计算机
如下图,我重启计算机后,端口5600确实在排除范围内,但是没有生效,仍然可以使用端口5600
# 移除排除范围
netsh int ip delete excludedportrange protocol=tcp numberofports=10 startport=56092
# 重启计算机