27

谁能告诉我如何使用 SharpSVN 库对存储库的用户(SVN 用户)进行身份验证。该存储库只能由这些用户提交。谢谢

4

4 回答 4

47

使用 Authenticate 的属性SVNClient

client.Authentication.Clear(); // Clear a previous authentication
client.Authentication.DefaultCredentials = new System.Net.NetworkCredential("user", "password");
于 2011-03-02T08:37:56.583 回答
14
client.Authentication.ForceCredentials("user", "password");

对于那些不想破坏默认凭据的人(如果您在同一台机器上运行 TortoiseSVN)。

于 2013-03-28T16:24:17.183 回答
10

您还可以通过添加事件处理程序来覆盖 SSL 证书错误,SslServerTrustHandlers如下所示:

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;
}
于 2011-05-14T16:52:54.963 回答
3

就我而言,SVN 服务器正在运行 VisualSVN Server 3.5.3,并启用了集成 Windows 身份验证。使用 SharpSvn 1.9004.3879.127,即使我使用用户名和密码配置了 SVN 客户端,它也会尝试使用 Windows 身份验证:

client = new SvnClient();
client.Authentication.Clear(); //Prevents saving/loading config to/from disk
client.Authentication.DefaultCredentials = new NetworkCredential("username", "password");

当应用程序代码由无权访问存储库的 Windows 用户运行时,这会导致以下错误:

SvnRepositoryIOException: 无法连接到 URL ' https://mysvnserver/svn/reponame '的存储库

我通过仅允许basicdigest身份验证来解决此问题:

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");
于 2016-10-06T00:56:00.303 回答