Couchbase Lite 2.1 Replicator Issue .net

Мы только что обновили наш SyncGatewaty до версии 2.1. Так что теперь я рефакторинг нашего клиентского кода для использования CouchbaseLite 2.1. Когда я пытаюсь повторить, я получаю ошибку:

Получена ошибка LiteCore: не найдено (6/404)

Первоначально я получил ошибку при подключении к нашему Dev Server, а затем установил локальный clean скопировать на мой ноутбук, и я получаю ту же ошибку при попытке подключиться к нему тоже.

Журнал:

ИНФОРМАЦИЯ) Couchbase 2019-01-10T10:56:47.8503147-07:00 (Запуск) [1] CouchbaseLite/2.1.2 (.NET; Microsoft Windows 10.0.17763) Build/13 LiteCore/ (15) Commit/9aebf28

ПРЕДУПРЕЖДЕНИЕ) LiteCore 2019-01-10T10:56:48.1943139-07:00 {C4SocketImpl#1}==> class litecore::repl::C4SocketImpl ws://localhost.com:443//_blipsync

ВНИМАНИЕ) LiteCore 2019-01-10T10: 56: 48.1943139-07: 00 {C4SocketImpl # 1} Неожиданное или нечистое отсоединение разъема! (причина = статус WebSocket, код =404)

ОШИБКА) Sync 2019-01-10T10:56:48.1993137-07:00 {Repl#2}==> class litecore::repl::Replicator c:\temp\content_meta_data.cblite2\ ->ws://localhost:443//_blipsync

ОШИБКА) Синхронизация 2019-01-10T10: 56: 48.1993137-0 7:00 {Repl # 2} Ошибка LiteCore: не найдено (6/404)

Мой код:

using System;
using System.IO;
using Couchbase.Lite;
using Couchbase.Lite.Support;
using Couchbase.Lite.Sync;
using NLog;

namespace ReplicatorExample
{
    public class DatabaseManager
    {
        private static readonly Logger _log = LogManager.GetCurrentClassLogger();
        public const string BUCKET_CONTENT_META_DATA = "content_meta_data";
        private static DatabaseManager _instance;

        public static DatabaseManager GetInstance()
        {
            NetDesktop.Activate();
            NetDesktop.EnableTextLogging("logs");

            return _instance ?? (_instance = new DatabaseManager());
        }

        public void InitializeBuckets()
        {
            try
            {
                var defaultAuthenticator = GetDefaultAuthenticator();

                var dirInfo = new DirectoryInfo($"c:\\temp\\{BUCKET_CONTENT_META_DATA}");
                if (!dirInfo.Parent.Exists)
                {
                    dirInfo.Parent.Create();
                }

                var database = new Database(dirInfo.FullName);

                // Create replicator to push and pull changes to and from the cloud
                var targetEndpoint = new URLEndpoint(new Uri("ws://localhost:4985"));
               var replConfig = new ReplicatorConfiguration(database, targetEndpoint)
                {
                    Authenticator = defaultAuthenticator,
                    Continuous = true,
                    //Channels = new List<string>
                    //{
                    //    "approved",
                    //    
                    //}
                };
                var replicator = new Replicator(replConfig);
                replicator.AddChangeListener((sender, args) =>
                {
                    if (args.Status.Error != null)
                    {
                        _log.Error($"{args.Status.Error}");
                    }
                    else
                    {
                        _log.Debug(args.Status);
                    }
                });
                replicator.Start();
            }
            catch (Exception e)
            {
                _log.Error(e);
            }
        }

        private Authenticator GetDefaultAuthenticator()
        {
            return new BasicAuthenticator("BigD","123456");
        }


    }
}

1 ответ

Я считаю, что вам нужно указать имя базы данных в URL для targetEndpoint,

Например: var targetEndpoint = new URLEndpoint(new Uri("ws://localhost:4984/mydatabase"));

Другие вопросы по тегам