我正在尝试使用Neo4j的.NET驱动程序从C#代码连接到Neo4j数据库。我的C#桌面应用程序和Neo4j在通过docker compose编排的独立docker容器上运行。提交查询时,驱动程序会抛出一个异常,并显示以下消息。
引发异常:System.Private.CoreLib.dll中的“Neo4j.Driver.ServiceUnavailable Exception”
引发异常:System.Private.CoreLib.dll中的“System.AggregateException”
出现一个或多个错误。(在30000毫秒内重试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/
。所以,我怀疑我错过了司机的东西。