当使用TransactionalGraphClient时,neo4jclient无法对neo4j数据库进行身份验证

时间:2017-06-08 21:57:02

标签: c# .net neo4j neo4jclient

以下实现neo4jclient的C#代码正确连接到数据库:

static readonly string dbConnection = "http://user:pass@localhost:7474/db/data";
GraphClient neoClient = new GraphClient(new Uri(dbConnection));

但是,当客户端被转换为事务性时,相同的代码会失败。

static readonly string dbConnection = "http://user:pass@localhost:7474/db/data";
ITransactionalGraphClient neoClient = new GraphClient(new Uri(dbConnection));

错误

The response status was: 401 Unauthorized

The response from Neo4j (which might include useful detail!) was: {
  "errors" : [ {
    "code" : "Neo.ClientError.Security.Unauthorized",
    "message" : "No authentication header supplied."
  } ]
}

我需要使用交易,是否存在这种行为的原因或解决方法?

更新:我发现初始数据库连接确实有效。我的第一个Cypher查询引发了异常,所以我在这里也发布了查询,以防出现问题。

public void AddNode(NodeClass node)
{
    using (var transaction = neoClient.BeginTransaction())
    {
        var paramaters = new
        {
            Id = node.Id,
            Name = node.Name,
            ...
        };

        neoClient.Cypher
           .Create("(x:NodeLabel {paramaters})")
           .WithParam("paramaters", paramaters)
           .ExecuteWithoutResults();

        transaction.Commit();
    }
}

1 个答案:

答案 0 :(得分:1)

如果您将连接更改为:

new GraphClient(new Uri("http://localhost:7474/db/data"), "user", "pass");

您将完全连接并执行您的查询。

就没有被标记为固定的情况而言 - 主要是因为我经常等待bug记者将其标记为,但我可能应该进行清理 - 事实上我已经已经,但尚未到达那里。

从缺乏文档的POV - 再次我只能道歉。这主要是因为我不得不努力工作,有时我觉得我回家时只想放松一下:-o