运行Neo4j PowerShell脚本提示底层连接意外关闭如何解决?
排查方向及解决方案
- 协议端口不匹配错误:你当前配置的
BaseUri用了http://前缀但指向了7687端口,这个端口是Neo4j专属Bolt二进制协议的监听端口,不支持HTTP请求,直接发起HTTP调用会被服务端主动断开连接。PSNeo4j对接HTTP API时应该使用Neo4j默认的HTTP端口7474,HTTPS对应端口为7473。如果要使用Bolt协议对接,需要调整对应配置参数。 - TLS版本配置缺失:PowerShell默认使用较低的TLS版本发起请求,如果你的Neo4j开启了HTTPS访问限制,要求TLS1.2及以上版本,就会出现连接被强制断开的问题,这也符合你用
Invoke-WebRequest也报错的特征。需要在脚本开头强制指定TLS版本。 - Neo4j HTTP接口未开启:检查Neo4j配置文件
neo4j.conf中,dbms.connector.http.enabled参数是否设置为true,dbms.connector.http.listen_address是否绑定了本地回环地址或者0.0.0.0,未开启HTTP接口的情况下所有HTTP请求都会被直接拒绝。 - 代理或防火墙拦截:检查系统是否开启了全局代理,PowerShell会默认继承系统代理配置,请求本地地址时如果走代理会出现连接异常,可以在发起请求前关闭代理配置。同时确认本地防火墙没有拦截PowerShell进程访问Neo4j的服务端口,也可以用
netstat -ano命令确认Neo4j对应的HTTP端口是否处于监听状态。
修正后的参考代码
# 强制指定TLS版本 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Import-Module PSNeo4j $Password = ConvertTo-SecureString -String "dummypswd" -AsPlainText -Force $Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'username', $password # 端口改为HTTP默认的7474 Set-PSNeo4jConfiguration -Credential $Cred -BaseUri 'http://localhost:7474' # 测试连接 Get-Neo4jUser
内容的提问来源于stack exchange,提问作者Luleo_Primoc
相关产品推荐
相关产品推荐

