【问题标题】:Problem connecting .NET Client to Neo4j Desktop version 4将 .NET 客户端连接到 Neo4j Desktop 版本 4 时出现问题
【发布时间】:2020-04-15 08:22:34
【问题描述】:

我刚刚安装了 Neo4j Desktop,并尝试使用 .NET 客户端进行连接,但问题是当我尝试连接时收到错误 404 响应(找不到资源)。 目前情况如下:

1) 我创建了一个新用户(admin,具有管理员权限),以替换使用 neo4j 用户(我没有此用户的密码)。

2) 使用管理员用户,我可以使用浏览器成功连接到 Neo4j,所以用户似乎没问题。

3) 我有一个在 Neo4j 默认数据库下运行的数据库,我可以从浏览器界面查询这个 db,所以 db 似乎也可以。

4) 在我的 .NET 应用程序中,我刚刚放置了所有 .NET 客户端示例中存在的连接命令:

var graphClient = new GraphClient(new Uri("http://localhost:7474/db/data"), "admin", "admin"); graphClient.Connect();

执行 Connect 会为未找到资源 (404) 生成异常。

目前Neo4j的版本是4.0.3,Noe4jClient的版本是3.1.0.6(找到最新的NuGet包),我怀疑是客户端版本3和Neo4j版本4不兼容。

【问题讨论】:

    标签: neo4j neo4jclient


    【解决方案1】:

    你是对的,GraphClient 目前无法使用4.x 数据库,你可以使用BoltGraphClient - 但你需要提供一个驱动程序实例由于加密与4.x 一起工作的方式发生了变化,它使其工作。

    //First create a 'Driver' instance.
    var driver = GraphDatabase.Driver("bolt://localhost:7687", AuthTokens.Basic("neo4j", "neo"), Config.Builder.WithEncryptionLevel(EncryptionLevel.None).ToConfig());
    
    //Pass that driver to the BoltGraphClient
    var bgc = new BoltGraphClient(driver);
    
    //Connect.
    bgc.Connect();
    

    【讨论】:

    • 谢谢克里斯,不幸的是,您的解决方案建议中仍然存在一些问题:1)如果我只包含命名空间 Neo4j.Driver,我会收到错误,因为缺少 BoltGraphClient 的定义 2)如果我包含还有命名空间 Neo4jClient (我猜应该不需要,但我已经尝试过),找到了 BoltGraphClient 的定义,但是我们遇到了驱动程序问题:“类型 IDriver 是在未引用的程序集中定义的......”所以它似乎这个包中有一些奇怪的东西,我想 BoltGraphClient 应该存在于 Neo4j.Driver 命名空间中但不是。
    • 当你从 nuget 拉取 Neo4jClient 库时,你需要 using Neo4j.Driver.V1,你会看到它也会引入 Neo4j.Driver
    • 我认为 V1 不存在了,这是在驱动程序的 GitHub 中找到的评论: - v1 已从驱动程序的包名称中删除。所有公共 API 都在命名空间 Neo4j.Driver 下,而不是旧的 Neo4j.Driver.V1。我可以确认我找不到任何带有 .v1 的 Neo4j nuget 包,并且我拥有的 nuget 包(最新版本 4.0.1)中没有“使用 Neo4j.Driver.V1”。有什么建议吗?
    • 您已更新软件包,但 Neo4jClient 不适用于 4.0 驱动程序。当您刚刚获得客户端时,它会拉下 1.7.x,您需要使用它
    • 我也无法让它工作,即使使用 Neo4jClient 1.7.x
    猜你喜欢
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多