我正在尝试使用Neo4j的Neo4j驱动程序从我的C#代码连接到一个.NET数据库。我的C#桌面应用程序和Neo4j是在通过docker -组合编排的单独的坞容器上运行的。当提交查询时,驱动程序会抛出带有以下消息的异常。
引发的
异常:在System.Private.CoreLib.dll异常中抛出'Neo4j.Driver.ServiceUnavailableException‘:在System.Private.CoreLib.dll中引发'System.AggregateException’--发生了一个或多个错误。( 30000 ms内重试6次失败)。确保数据库处于联机状态,然后再试一次。)
docker-compose.yml
version: '3.8'
services:
myConsoleApp:
image: ${DOCKER_REGISTRY-}myConsoleApp
build:
context: .
dockerfile: MyConsoleApp/Dockerfile
neo4j:
image: neo4j:latest
network_mode: "bridge"
ports:
- "7474:7474" # HTTP
- "7687:7687" # Bolt
environment:
- NEO4J_dbms_security_procedures_unrestricted=apoc.*
- NEO4J_apoc_import_file_enabled=true
- NEO4J_dbms_shell_enabled=true
- NEO4J_dbms_memory_pagecache_size=1G
- NEO4J_dbms.memory.heap.initial_size=1G
- NEO4J_dbms_memory_heap_max__size=1G
- NEO4J_AUTH=neo4j/password
volumes:
- ./plugins:/plugins
- ./data:/data
- ./import:/import
在C#控制台应用程序中访问它的方式:
var driver = GraphDatabase.Driver(
"bolt://localhost:7687",
AuthTokens.Basic("neo4j", "password"));
using (var session = driver.AsyncSession())
{
var x = session.WriteTransactionAsync(async tx =>
{
var result = await tx.RunAsync(
"CREATE (a:Person:Employee)");
});
await x;
}
等待x
时会引发异常。
我可以通过上面的设置确认,Neo4j容器已经启动并正确侦听HTTP端口,至少因为我可以通过http://localhost:7474/browser/
访问它。所以,我想我从司机身上漏掉了什么。
发布于 2022-05-31 13:54:49
您的控制台应用程序似乎使用的是‘螺栓:// localhost :7687’,但这是在一个容器中运行的,因此localhost将引用容器的localhost。我认为您希望使用neo4j服务名称而不是本地主机。bolt://ne4j:7687
https://stackoverflow.com/questions/72420578
复制相似问题