2016-04-29 105 views
0

我想用LibGit2Sharp克隆一个VSTS(Visual Studio Team Services)存储库。我设置了一个CredentialsHandlerUsernamePasswordCredentials代表我的Microsoft帐户的凭据,结果我得到的是这样的:如何使用LibGit2Sharp对VSTS进行身份验证?

LibGit2Sharp.LibGit2SharpException was unhandled 
    HResult=-2146233088 
    Message=Too many redirects or authentication replays 
    Source=LibGit2Sharp 

如果我甚至无法通过我的实际用户名和密码,我不知道是什么可能会工作。

我也尝试使用DefaultCredentials作为here,但似乎只用于TFS,而不是VSTS(TFS的NTLM凭据)。

回答

4

首先,您需要为您的帐户启用备用验证。请按照以下步骤操作:

  1. 登录VSTS Web Portal。
  2. 点击您的帐户名称,然后从右上角选择“我的个人资料”。
  3. 切换到“安全”面板。
  4. 选择“备用认证凭证”并对其进行配置。

enter image description here

然后你可以使用替代凭据来验证VSTS。以下代码显示了如何向VSTS进行身份验证并执行克隆作业。

using LibGit2Sharp; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string surl = "https://youraccount.visualstudio.com/DefaultCollection/_git/Remoterepo"; 
      string lpath = "C:\\LocalPath"; 
      CloneOptions co = new CloneOptions(); 
      string un = "alternativeusername"; 
      string pwd = "alternativepassword"; 
      Credentials ca = new UsernamePasswordCredentials() {Username = un, Password = pwd }; 
      co.CredentialsProvider = (_url, _user, _cred) => ca ; 
      Repository.Clone(surl,lpath,co); 
     } 
    } 
} 
+0

太棒了。我实际上已经进入了这个领域并且完成了一切正确的事情,除了我曾经认为我仍然可以使用我的主要电子邮件地址和密码,并且现在只勾选了复选框。看起来你真的必须输入一个辅助用户名来完成这项工作。 你知道Windows的Git Credential Manager(https://github.com/Microsoft/Git-Credential-Manager-for-Windows)是否允许使用常规凭证吗? – Todd