Kann mir jemand sagen, wie Benutzer (SVN-Benutzer) für ein Repository mit SharpSVN-Bibliothek authentifizieren. Dieses Repository sollte nur von diesen Benutzern übernommen werden. DankSVN-Repository-Authentifizierung mit SharpSVN
Antwort
Verwenden Sie die Authentifizieren Eigenschaften von SVNClient
:
client.Authentication.Clear(); // Clear a previous authentication
client.Authentication.DefaultCredentials = new System.Net.NetworkCredential("user", "password");
Sie können auch durch Hinzufügen eines Ereignishandler SslServerTrustHandlers
wie dieses SSL-Zertifikat Fehler außer Kraft setzen:
SVN_Conn.Authentication.SslServerTrustHandlers += new EventHandler<SharpSvn.Security.SvnSslServerTrustEventArgs>(SVN_SSL_Override);
static void SVN_SSL_Override(object sender, SharpSvn.Security.SvnSslServerTrustEventArgs e)
{
e.AcceptedFailures = e.Failures;
e.Save = true;
}
Nur so, dass es erwähnt wurde: Rufen Sie nicht 'client.authentication.clear()' nach dem Abonnieren des Ereignisses auf, sonst wird es nicht ausgelöst. – SanBen
client.Authentication.ForceCredentials("user", "password");
Für diejenigen, Sie möchten Ihre Standardanmeldeinformationen nicht löschen (wenn Sie TortoiseSVN auf demselben Computer ausführen).
In meinem Fall wurde auf dem SVN-Server VisualSVN Server 3.5.3 mit integrierter Windows-Authentifizierung ausgeführt. Mit SharpSvn 1.9004.3879.127 versuchte das SVN-Client der Windows-Authentifizierung zu verwenden, selbst wenn ich es mit einem Benutzername und Passwort konfigurierte:
client = new SvnClient();
client.Authentication.Clear(); //Prevents saving/loading config to/from disk
client.Authentication.DefaultCredentials = new NetworkCredential("username", "password");
Dies führte zu dem folgenden Fehler, wenn der Anwendungscode von einem Benutzer Windows ausgeführt wurde, die didn 't Zugriff auf das Repository haben:
SvnRepositoryIOException: Kann nicht ein Repository an URL verbinden' https://mysvnserver/svn/reponame '
ich dies durch only allowing basic
and digest
authentication fixed:
client = new SvnClient();
client.Configuration.SetOption("servers", "global", "http-auth-types", "basic;digest");
client.Authentication.Clear(); // Prevents saving/loading config to/from disk
client.Authentication.DefaultCredentials = new NetworkCredential("username", "password");
Sollte als beste Antwort markiert werden. Arbeitete auch für mich, danke! – jocull
ja hat auch für mich funktioniert Danke Bertrand :) – picnic4u
Das geht bei mir nicht, gibt es da Voraussetzungen dafür? –