CosmosDB C # Gremlin - получение исключения при отправке запроса - PullRequest
0 голосов
/ 10 октября 2018

Взято из: https://docs.microsoft.com/en-us/azure/cosmos-db/create-graph-dotnet

Получаю исключение в части .wait ():

   NullReferenceException: Object reference not set to an instance of an object.

   at Gremlin.Net.Driver.Connection.ReceiveAsync[T]()
   at Gremlin.Net.Driver.Connection.SubmitAsync[T](RequestMessage requestMessage)
   at Gremlin.Net.Driver.ProxyConnection.SubmitAsync[T](RequestMessage requestMessage)
   at Gremlin.Net.Driver.GremlinClient.SubmitAsync[T](RequestMessage requestMessage)
   at Gremlin.Net.Driver.GremlinClientExtensions.SubmitAsync[T](IGremlinClient gremlinClient, String requestScript, Dictionary`2 bindings)

Код:

    private static string database = "db";
    private static string collection = "col";                                             
    private static string hostname = "grem-test.gremlin.cosmosdb.azure.com";
    public void test()
    {
        var gremlinServer = new GremlinServer(hostname, 443, enableSsl: true,
                                                username: "/dbs/" + database + "/colls/" + collection,
                                                password: authKey);
        var gremlinClient = new GremlinClient(gremlinServer);
        var grem = "g.V()";
        var t = gremlinClient.SubmitAsync<dynamic>(grem);
        t.Wait();

        foreach (var result in t.Result)
        {
            // The vertex results are formed as dictionaries with a nested dictionary for their properties
            string output = JsonConvert.SerializeObject(result);
            Console.WriteLine(String.Format("\tResult:\n\t{0}", output));
        }

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Я начал с примера приложения, в котором оно используется:

        private static Task<ResultSet<dynamic>> SubmitRequest(GremlinClient gremlinClient, string query)
        {
            try
            {
                return gremlinClient.SubmitAsync<dynamic>(query);
            }
            catch (ResponseException e)
            {
                // They have extra stuff here for the request information that isn't relevant
                throw;
            }
        }

Я расширился оттуда и у меня никогда не возникало никаких проблем, кроме случайного исключения при попытке запустить запрос, пока еще один работал.Я могу только предположить, что выполнение запросов таким способом работает лучше, чем прямой вызов SubmitAsync ().

Еще одна вещь, которую я бы порекомендовал, это двойная проверка ваших значений параметров сервера на всякий случай.

0 голосов
/ 12 октября 2018

Это должно быть:

    var task = gremlinClient.SubmitAsync<dynamic>(grem);
    task.Wait();

Взято из Gremlin C # Образцы:

                 // Create async task to execute the Gremlin query.
                var task = gremlinClient.SubmitAsync<dynamic>(query.Value);
                task.Wait();
...