Neo4J客户端连接错误

时间:2015-06-08 15:37:33

标签: .net connect neo4jclient

我是neo4j的新手,无法使用.NET连接到Neo4J服务器。

我在Visual Studio中安装了Neo4j DB(v2.2.2)和neo4jclient(v 1.0.0.662)以及Install-Package Neo4jclient,使用以下代码创建了一个空项目

GraphClient Client;
Client = new GraphClient(new Uri("http://localhost:7474/db/data/"));
Client.Connect();

问题是我得到一个错误,说我错过了GraphClient.cs。还有什么我需要安装或下载的吗?

由于

1 个答案:

答案 0 :(得分:3)

编辑:由于这是最初编写的,客户端已经移动了一点(任何版本> 1.1.0.0),您可以传递构造的auth详细信息(这是首选方式):

var client = new GraphClient(new Uri("URI"), "User", "Pass"));

因为您使用的是Nex4j的2.2倍,所以您将拥有一个用户/传递元素(除非您已将其关闭),因此您有2个选项,1关闭身份验证,2通过以下方式发送身份验证你的电话。

方法1 - 禁用身份验证

就个人而言 - 对于本地开发工作,我倾向于将其关闭。为此,请转到您安装Neo4j的位置,然后转到conf文件夹。在那里,编辑neo4j-server.properties文件。大致在第24行附近应该有一行读数:

dbms.security.auth_enabled=true

您只需将其设置为false,您就会发现您的连接正常。

方法2 - 发送验证详细信息

您需要为实时版本执行此操作(除非您计划不在您的数据库中使用auth),您有两个选项,详细信息如下:Upgrading your Neo4j to 2.2 and having Auth trouble?快速方法是传递auth内容URI,而不是http://localhost.:7474/db/data,而是执行以下操作:http://username:password@localhost.:7474/db/data

另一条路径涉及将 Authentication Header 注入到所有请求中 - 您创建了一个客户端身份验证包装器:

private class HttpClientAuthWrapper : IHttpClient
{
    private readonly AuthenticationHeaderValue _authenticationHeader;
    private readonly HttpClient _client;

    public HttpClientAuthWrapper(string username, string password)
    {
        _client = new HttpClient();
        if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
            return;

        var encoded = Encoding.ASCII.GetBytes(string.Format("{0}:{1}", username, password));
        _authenticationHeader = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(encoded));
    }

    public Task<HttpResponseMessage> SendAsync(HttpRequestMessage request)
    {
        if(_authenticationHeader != null)
            request.Headers.Authorization = _authenticationHeader;
        return _client.SendAsync(request);
    }
}

然后将其注入Neo4jClient,如下所示:

var client = new GraphClient(
    new Uri("http://localhost.:7474/db/data"), 
    new HttpClientAuthWrapper("user", "pass#")
    );
client.Connect();
正如他们所说,选择是你的选择。