RavenDB安装启动报System.Net.Sockets.SocketException (10013)错误求解
RavenDB启动SocketException 10013错误解决方案
根因分析
错误码10013本质是Windows系统禁止RavenDB绑定指定的TCP端口,和防火墙规则无关,常见触发原因如下:
- RavenDB默认使用的8080、38888端口被其他进程占用
- 目标端口被Hyper-V、VPN客户端、防病毒软件加入系统预留端口范围,即使端口未被占用也无法绑定
- 系统安全策略或第三方安全软件拦截了RavenDB的套接字绑定操作
分步解决方案
- 第一步:排查端口占用
以管理员身份打开PowerShell,执行命令查看目标端口是否被占用(以默认端口8080为例):netstat -ano | findstr :8080
如果有返回结果,最后一列数值为占用端口的进程PID,打开任务管理器的详情页终止对应进程即可;如果无法终止占用进程,可修改RavenDB配置更换端口:找到安装目录下的settings.json文件,添加/修改配置项"ServerUrl": "http://0.0.0.0:自定义端口号",保存后再启动服务。 - 第二步:排查系统端口预留
执行命令查看系统预留的TCP端口范围:netsh int ipv4 show excludedportrange protocol=tcp
如果输出的范围包含RavenDB要使用的端口,可先重置网络预留规则:- 执行
net stop winnat停止相关服务 - 执行命令添加RavenDB端口的排除规则(以8080、38888为例):
netsh int ipv4 add excludedportrange protocol=tcp startport=8080 numberofports=1netsh int ipv4 add excludedportrange protocol=tcp startport=38888 numberofports=1 - 执行
net start winnat重启服务后,再次启动RavenDB测试
- 执行
- 第三步:排查安全软件拦截
暂时关闭第三方防病毒软件、Windows实时保护后启动RavenDB,如果可以正常启动,将RavenDB安装目录、Raven.Server.exe加入安全软件的白名单即可。 - 第四步:重置网络栈
以上操作都无效的情况下,执行命令重置Winsock:netsh winsock reset
重启电脑后再次启动RavenDB即可。
内容的提问来源于stack exchange,提问作者HugoMH
相关产品推荐
相关产品推荐

