2016-09-16 2 views
1

Я пытаюсь использовать драйвер Neo4j .Net общаться с моей локальной базы данных Neo4j, изнутри приложения Xamarin ,Метод «Sockets.Plugin.Abstractions.ITcpSocketClient.ConnectAsync» не найден (драйвер Neo4j)

Это мой код:

using Neo4j.Driver.V1; // I have this at the top of the class 

//and this in the constructor just to test it 
using (var driver = GraphDatabase.Driver("bolt://localhost", AuthTokens.Basic("neo4j", "root"))) 
using (var session = driver.Session()) 
{ 
    session.Run("CREATE (a:User {name:'Arthur'})"); 
} 

Это, по существу, тот же код, который они дают в качестве примера на их сайте (https://neo4j.com/developer/language-guides/).

Когда я пытаюсь запустить проект, я получаю следующее сообщение об ошибке:

enter image description here

System.AggregateException: One or more errors occurred. ---> System.MissingMethodException: Method 'Sockets.Plugin.Abstractions.ITcpSocketClient.ConnectAsync' not found. 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine] (TStateMachine& stateMachine) [0x00031] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:316 
    at Neo4j.Driver.Internal.Connector.SocketClient.Start() [0x00023] in <d05dc2e6bd2a40acab42430b347d4724>:0 
    at Neo4j.Driver.Internal.Connector.SocketConnection.<.ctor>b__3_0() [0x00000] in <d05dc2e6bd2a40acab42430b347d4724>:0 
    at System.Threading.Tasks.Task`1[TResult].InnerInvoke() [0x00012] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/threading/Tasks/Future.cs:680 
    at System.Threading.Tasks.Task.Execute() [0x00016] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:2502 
    --- End of inner exception stack trace --- 
    at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:2157 
    at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00052] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:3189 
    at System.Threading.Tasks.Task.Wait() [0x00000] in /Users/builder/data/lanes/3426/6c3fee4d/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:3054 
    at Neo4j.Driver.Internal.Connector.SocketConnection..ctor (Neo4j.Driver.Internal.Connector.ISocketClient socketClient, Neo4j.Driver.V1.IAuthToken authToken, Neo4j.Driver.V1.ILogger logger, Neo4j.Driver.Internal.Messaging.IMessageResponseHandler messageResponseHandler) [0x00046] in <d05dc2e6bd2a40acab42430b347d4724>:0 
    at Neo4j.Driver.Internal.Connector.SocketConnection..ctor (System.Uri url, Neo4j.Driver.V1.IAuthToken authToken, Neo4j.Driver.V1.Config config) [0x00016] in <d05dc2e6bd2a40acab42430b347d4724>:0 
    at Neo4j.Driver.Internal.Session..ctor (System.Uri uri, Neo4j.Driver.V1.IAuthToken authToken, Neo4j.Driver.V1.Config config, Neo4j.Driver.Internal.Connector.IConnection conn, System.Action`1[T] releaseAction) [0x0005c] in <d05dc2e6bd2a40acab42430b347d4724>:0 
    at Neo4j.Driver.Internal.SessionPool.<GetSession>b__14_0() [0x0003b] in <d05dc2e6bd2a40acab42430b347d4724>:0 
    at Neo4j.Driver.Internal.LoggerBase.TryExecute[T] (System.Func`1[TResult] func) [0x00000] in <d05dc2e6bd2a40acab42430b347d4724>:0 

Я попытался, глядя через руководство Neo4j (http://neo4j.com/docs/operations-manual/current/) и поиск в Интернете, но не смог найти решение.

ответ

1

Если вы посмотрите на последнюю Neo4j Driver: https://www.nuget.org/packages/Neo4j.Driver/1.0.2

Вы увидите, что он имеет зависимость от rda.SocketsForPCL (> = 1.2.2)

Метод Neo4j пытается назвать это изменен в последней rda.SocketsForPCL: https://www.nuget.org/packages/rda.SocketsForPCL/2.0.2

комментарий-разработчика является:

TcpSocketClient 's ConnectAsync method optionally takes a CancellationToken to support client-invoked cancellation and scenarios like timeout. Thanks @SparkStream

Ваша ошибка:

Method 'Sockets.Plugin.Abstractions.ITcpSocketClient.ConnectAsync' not found.

Решение:

Выберите более раннюю версию rda.SocketsForPCL (например, 1.2.2, который, безусловно, работает), и ваша проблема исчезнет.

Например, если вы используете менеджер зависимостей PAKET для NuGet, вы можете добавить следующую строку в ваш paket.dependencies файла:

nuget rda.SocketsForPCL ~> 1 

Удачи!

+0

Спасибо! Это решило проблему. Тогда мне просто нужно было изменить «bolt: // localhost» на «bolt: //127.0.0.1: 7687», чтобы все отлично работало –

Смежные вопросы