我是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。还有什么我需要安装或下载的吗?
由于
答案 0 :(得分:3)
编辑:由于这是最初编写的,客户端已经移动了一点(任何版本> 1.1.0.0
),您可以传递构造的auth详细信息(这是首选方式):
var client = new GraphClient(new Uri("URI"), "User", "Pass"));
因为您使用的是Nex4j的2.2倍,所以您将拥有一个用户/传递元素(除非您已将其关闭),因此您有2个选项,1关闭身份验证,2通过以下方式发送身份验证你的电话。
就个人而言 - 对于本地开发工作,我倾向于将其关闭。为此,请转到您安装Neo4j的位置,然后转到conf
文件夹。在那里,编辑neo4j-server.properties
文件。大致在第24行附近应该有一行读数:
dbms.security.auth_enabled=true
您只需将其设置为false
,您就会发现您的连接正常。
您需要为实时版本执行此操作(除非您计划不在您的数据库中使用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();
正如他们所说,选择是你的选择。