Cluster.builder () продолжает зависать в Xamarin при подключении к Cassandra API - PullRequest
0 голосов
/ 15 октября 2018

Я пишу приложение с Xamarin, в котором я хочу подключиться к Cassandra API из Azure Cosmos DB.Портал Azure предоставляет некоторый код быстрого запуска, который должен помочь мне начать подключение к моей базе данных, но по какой-то причине программа продолжает зависать без сбоев и продолжений.

Строка, в которой останавливается мой отладчик, - это (подробнее код ниже)):

Кластерный кластер = Cluster.Builder () ...

Код является копией вставки из кода быстрого запуска, предоставленного порталом Azure, но неКажется, не работает, и я не могу найти ничего, связанного с этой проблемой в Google.Программа никогда не останавливается, но также никогда не продолжается и ошибки не выдается.

У кого-нибудь была эта проблема раньше?

public MainPage()
    {
        InitializeComponent();


        var options = new Cassandra.SSLOptions(SslProtocols.Tls12, true, ValidateServerCertificate);
        options.SetHostNameResolver((ipAddress) => "<DATABASE>.cassandra.cosmosdb.azure.com");
        Cluster cluster = Cluster.Builder()
            .WithCredentials("<USERNAME>", "<KEY>")
            .WithPort(10350)
            .AddContactPoint("<DATABASE>.cassandra.cosmosdb.azure.com")
            .WithSSL(options)
            .Build();

        ISession session = cluster.Connect("test");

        resultLabel.Text = "test";

        //    string query = "SELECT * FROM test.users";
        //    RowSet rows = session.Execute(query);

        //    foreach (Row r in rows) {
        //        resultLabel.Text = r.GetColumn("email").ToString();
        //    }
    }

    public static bool ValidateServerCertificate(
        object sender,
        X509Certificate certificate,
        X509Chain chain,
        SslPolicyErrors sslPolicyErrors)
    {
        if (sslPolicyErrors == SslPolicyErrors.None)
            return true;

        Console.WriteLine("Certificate error: {0}", sslPolicyErrors);
        // Do not allow this client to communicate with unauthenticated servers.
        return false;
    }
...