【发布时间】:2020-04-05 19:50:46
【问题描述】:
我一直在将 Docker 容器中的 .Net Core 代码连接到 Neo4j 数据库。我首先尝试使用 Neo4jClient,但遇到了 docker 容器外的 http 连接问题。然后,我使用 host.docker.internal 到别名 localhost 直接使用螺栓连接尝试了 Neo4j.Driver。这工作得很好。我用bolt(再次从Docker内部)换回了Neo4jClient,但它失败了。 感谢您的帮助。
Neo4j.Driver.V1.ServiceUnavailableException
HResult=0x80131500
Message=Connection with the server breaks due to SecurityException: Failed to establish encrypted connection with server bolt://host.docker.internal:7687/.
Source=Neo4j.Driver
更新: 在下面 Chris Skardon 的帮助下。我按照示例 11.2 部分为螺栓打开了 ssl。启用螺栓 SSL。 As per instructions here at Neo4j
下面使用 Neo4j.Driver 的代码直接工作并更新了 12 个组织的数据库。 它在 .Net Core Docker 容器中运行并使用 host.docker.internal。如果没有加密配置,我本来希望这不会起作用。但确实如此。
IDriver driver = GraphDatabase.Driver("bolt://host.docker.internal:7687", AuthTokens.Basic("neo4j", "xxxxx"));
IAsyncSession session = driver.AsyncSession(o => o.WithDatabase("neo4j"));
此代码使用 Neo4jClient 不起作用。我最初是在上面的 docker 容器中运行它,并认为可能就是这样。但是还是有没有容器的问题
IDriver driver = GraphDatabase.Driver("bolt://localhost:7687", AuthTokens.Basic("neo4j", "xxxxx"), Config.Builder.WithEncryptionLevel(EncryptionLevel.Encrypted).ToConfig());
var client = new BoltGraphClient(driver);
例外情况是:
- 与服务器的连接因 SecurityException 而中断:失败 与服务器建立加密连接 螺栓://本地主机:7687/。
- IOException:身份验证失败,因为 对方已关闭传输流。
Neo4j 日志中不显示任何内容。我在支持 SSL 的 .Net Core API 代码中没有任何特定代码,并且谷歌搜索第二个异常会返回许多不正确的 TLS 结果。所以正在探索。
【问题讨论】:
-
您使用的是什么版本的客户端/驱动程序?什么版本的数据库?
-
应该提供道歉。 -- Neo4j 4.0.3 -- Neo4jClient 3.1.0.6 -- Docker 引擎 19.03.8 -- .Net Core 3.1.101
-
我现在不在电脑旁,但是你能不能尝试在客户端上打开加密并试一试,我不确定语法,我会说的当我到达时正确地
标签: c# docker neo4j neo4jclient bolt