[英].Net Connection to Bolt URI failing with Neo4jClient but not Neo4j.Driver
我一直在將 Docker 容器中的 .Net Core 代碼連接到 Neo4j DB。 我首先嘗試使用 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。 按照 Neo4j 處的說明
下面的代碼使用 Neo4j.Driver 直接工作並使用 12 個組織更新數據庫。 它在 a.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);
例外情況是:
Neo4j 日志中沒有出現任何內容。 我在 .Net Core API 代碼中沒有任何特定代碼來支持 SSL 和谷歌搜索第二個異常時返回了很多不正確的 TLS 結果。 所以我正在探索。
Neo4j 的4.x
版本需要設置 Encryption, Neo4jClient
實際上並沒有提供簡單的方法來執行此操作,因此您需要傳入IDriver
實例,如下所示:
var driver = GraphDatabase.Driver("bolt://localhost:7687", AuthTokens.Basic("neo4j", "neo"), Config.Builder.WithEncryptionLevel(EncryptionLevel.None).ToConfig());
var client = new BoltGraphClient(driver);
編輯
我一直在對此進行測試-問題實際上是相反的-您需要將加密級別設置為“無”-除非您實際上擁有 SSL 證書設置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.