设置在SharpSvn .NET库提交笔者抛出SvnRepisitoryIOException异常(

2019-10-17 06:28发布

如果您有使用.NET SharpSvn图书馆的经验,我可以用你的专业知识过程中SVN提交设置提交的作者。 我已经尝试了一些东西,但他们都抛出SvnRepisitoryIOException除非用户保存在TortoiseSVN的。 不过,我想请根据情况不同的用户凭据。 如果我已经保存了用户的默认凭据,TortoiseSVN的记得他们在设置>保存数据>认证的数据,并且使用能够提交的文件验证用户的提交者。 如果你点击“清除”在这里,SharpSVN不会知道是谁在对提交身份验证。

假设你有你的类这些指令:使用SharpSvn; 使用SharpSvn.Security; 我使用VisualSVN服务器for Windows的免费版本。 我有两个用户,一个被命名的“PASS1”,“用户1”和密码,以使问题简单化,下面的例子失败。

如何防止被抛出该异常,并承诺使用不同的用户对于作者(在我的日志上提交的)?

尝试#1:

    using (SvnClient client = new SvnClient())
    { 
        client.Authentication.Clear();  // Clear a previous authentication 
        client.Authentication.DefaultCredentials = new System.Net.NetworkCredential("user1", "pass1");

        SvnCommitArgs ca = new SvnCommitArgs();
        ca.LogMessage = "svn log message created at " + DateTime.Now.ToString();
        bool action = client.Commit(@"C:\demo_repo\demo_project\trunk\file.txt", ca);
    }

尝试#2:

    using (SvnClient client = new SvnClient())
    {
        client.SetProperty(("", "svn:author", "user1");

        SvnCommitArgs ca = new SvnCommitArgs();
        ca.LogMessage = "svn log message created at " + DateTime.Now.ToString();
        bool action = client.Commit(@"C:\demo_repo\demo_project\trunk\file.txt", ca);
    }

尝试3:

    using (SvnClient client = new SvnClient())
    {
        client.Authentication.Clear(); // Clear predefined handlers
        client.Authentication.UserNamePasswordHandlers
            += delegate(object obj, SharpSvn.Security.SvnUserNamePasswordEventArgs args)
        {
            args.UserName = "user1";
            args.Password = "pass1";
        }; 

        SvnCommitArgs ca = new SvnCommitArgs();
        ca.LogMessage = "svn log message created at " + DateTime.Now.ToString();
        bool action = client.Commit(@"C:\demo_repo\demo_project\trunk\file.txt", ca);
    }

Answer 1:

运行应用程序作为管理员,当越来越堆栈跟踪后,我能赶上使用框架的例外,接受非受信任的证书颁发者。

*未处理的异常:SharpSvn.SvnRepositoryIOException:提交失败(细节如下):===> SharpSvn.SvnRepositoryIOException:无法连接到一个URL库的 'https://mycomputer/svn/demo_repo/demo_project/trunk/file.txt' - > SharpSvn.SvnRepositoryIOException:的“”选项:服务器证书验证失败:发行人不被信任(https://开头MYCOMPUTER)---内部异常堆栈跟踪的结尾---内部异常堆栈跟踪的结尾 - - 在SharpSvn.SvnClientArgs.HandleResult(SvnClientContext客户,SvnException错误,对象目标)在SharpSvn.SvnClientArgs.HandleResult(SvnClientContext客户,svn_error_t *错误,对象目标)..... *

新代码:

            client.Authentication.Clear(); // Clear predefined handlers
            client.Authentication.UserNamePasswordHandlers
                += delegate(object obj, SharpSvn.Security.SvnUserNamePasswordEventArgs args)
            {
                args.UserName = "user1";
                args.Password = "pass1";
            }; 

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

            SvnCommitArgs ca = new SvnCommitArgs();
            ca.LogMessage = "svn log message created at " + DateTime.Now.ToString();
            bool action = client.Commit(@"C:\demo_repo\demo_project\trunk\file.txt", ca);


文章来源: Setting commit author in SharpSvn .NET library throws SvnRepisitoryIOException exception