使用 TransactionalGraphClient 时,neo4jclient 无法针对 neo4j 数据库进行身份验证
neo4jclient fails to authenticate against neo4j database when TransactionalGraphClient is used
以下实现 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();
}
}
如果您将连接更改为:
new GraphClient(new Uri("http://localhost:7474/db/data"), "user", "pass");
您将连接并执行您的查询,绝对没问题。
就未被标记为已修复的情况而言 - 这主要是因为我通常等待错误报告者将其标记为已修复,但我可能应该进行清理 - 事实上我已经这样做了,但还没到。
从缺少文档的角度来看 - 我只能再次表示歉意。这主要是因为不幸的是我必须工作才能生活,有时我觉得回家后只想放松一下:-o
以下实现 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();
}
}
如果您将连接更改为:
new GraphClient(new Uri("http://localhost:7474/db/data"), "user", "pass");
您将连接并执行您的查询,绝对没问题。
就未被标记为已修复的情况而言 - 这主要是因为我通常等待错误报告者将其标记为已修复,但我可能应该进行清理 - 事实上我已经这样做了,但还没到。
从缺少文档的角度来看 - 我只能再次表示歉意。这主要是因为不幸的是我必须工作才能生活,有时我觉得回家后只想放松一下:-o