Учетные данные SVN

У меня проблема, из-за которой я постоянно получаю сообщение об ошибке

Нет провайдера, зарегистрированного для учетных данных «svn.ssl.server»

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

    //SVN Client repo sync

    public void DownloadSVNStartup(string url, string path)
    {

        using (SvnClient client = new SvnClient())
        {
            try
            {
                client.CleanUp(path); //will go to catch block since there's no working copy yet I 
                                      //want to checkout for the first time then next time this part 
                                      //will work.
                SvnUI.Bind(client, this);
                SvnCheckOutArgs sco = new SvnCheckOutArgs();
                sco.AllowObstructions = false;
            }
            catch (Exception ex) 
            {
                MessageBox.Show("Line 88");
                MessageBox.Show(ex.ToString());
                myLog.WriteEntry(ex.ToString(), EventLogEntryType.Error);
            }

            client.Configuration.SetOption("servers", "global", "http-auth-types", "basic;digest");
            client.Authentication.Clear();
            client.Authentication.ForceCredentials("user", "password");

            try
            {
                client.Authentication.SslServerTrustHandlers += delegate (object sender, 
                 SvnSslServerTrustEventArgs e)
                {
                    e.AcceptedFailures = e.Failures;
                    e.Save = false; // Save acceptance to authentication store
                };

                Object[] args = { url, path };
                BackgroundWorker worker = new BackgroundWorker();
                worker.DoWork += backgroundWorker1_DoWork;
                worker.RunWorkerAsync(args);
                this.Hide();

            }
            catch (Exception ex)
            {
                MessageBox.Show("Line126");
                MessageBox.Show(ex.ToString());
                myLog.WriteEntry(ex.ToString(), EventLogEntryType.Error);
            }
        }
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)    //connect to the Svn 
                                                                               //server
    {
        try

        {
            Object[] arg = e.Argument as Object[];
            string url = (string)arg[0];
            string path = (string)arg[1];

            using (SvnClient client = new SvnClient())
            {
                client.Authentication.Clear(); // Prevents saving/loading config to/from disk
                client.Authentication.ForceCredentials("user", "password");
                client.CheckOut(new Uri(url), path);        //fails here with the error No provider registered for 'svn.ssl.server' credentials
                client.CleanUp(path);
                client.Update(path);
                client.CleanUp(path);
            }
        }

        catch (Exception ex)
        {
            MessageBox.Show("Line166", ex.Message.ToString());
            MessageBox.Show(ex.ToString());
        }
    }

Я часами искал решения и ничего не нашел.

Оба сервера настроены с одинаковым портом, одинаковыми настройками HTTPS и созданными сертификатами, одинаковыми версиями сервера VisualSVN.

Я пробовал только одно решение, которое смог найти, так как это вообще не распространенная проблема. Это должно исправить эту ошибку, но это не так.

     client.Authentication.SslServerTrustHandlers += delegate (object sender, SvnSslServerTrustEventArgs e)
               {
                   e.AcceptedFailures = e.Failures;
                   e.Save = false; // Save acceptance to authentication store
               };

person Dominic Legendre    schedule 31.07.2020    source источник


Ответы (1)


Я исправил это, добавив обработчик событий для сертификата.

     private void SslClientCertificateHandlers(object sender, SvnSslClientCertificateEventArgs e)
    { 
        e.Save = true;
        e.CertificateFile = @"where you want to save certs";
    }
person Dominic Legendre    schedule 29.09.2020