2014-10-01 46 views
0

這裏是我使用來獲取代碼:LibGit2Sharp集:獲取失敗「重定向過多或驗證回放」

public static void GitFetch() 
{ 
    var creds = new UsernamePasswordCredentials() 
       {Username = "user", 
       Password = "pass"}; 
    var fetchOpts = new FetchOptions {Credentials = creds}; 
    using (repo = new Repository(@"C:\project");) 
    { 
     repo.Network.Fetch(repo.Network.Remotes["origin"], fetchOpts); 
    } 
} 

但以下情況除外取過程中失敗:

LibGit2Sharp.LibGit2SharpException: Too many redirects or authentication replays 
Result StackTrace: 
at LibGit2Sharp.Core.Ensure.HandleError(Int32 result) 
    at LibGit2Sharp.Core.Proxy.git_remote_fetch(RemoteSafeHandle remote, Signature signature, String logMessage) 
    at LibGit2Sharp.Network.DoFetch(RemoteSafeHandle remoteHandle, FetchOptions options, Signature signature, String logMessage) 
    at LibGit2Sharp.Network.Fetch(Remote remote, FetchOptions options, Signature signature, String logMessage) 

我已驗證配置文件具有所需的遠程名稱,並且該命令行可以執行git fetch。我發現異常來自libgit2\src\transport\winhttp.c,但我無法想出解決方法。

回答

4

我試圖@Carlos'以下列方式建議:

public static void GitFetch() 
{ 
    var creds = new UsernamePasswordCredentials() 
       {Username = "user", 
       Password = "pass"}; 
    CredentialsHandler credHandler = (_url, _user, _cred) => creds; 
    var fetchOpts = new FetchOptions { CredentialsProvider = credHandler }; 
    using (repo = new Repository(@"C:\project");) 
    { 
     repo.Network.Fetch(repo.Network.Remotes["origin"], fetchOpts); 
    } 
} 

我可以從GitHub上公開回購,以及從密碼保護私人回購協議上取到位桶;然而,我無法對工作中通過局域網託管的存儲庫做同樣的事情。原來他們的配置方式不接受由libgit2sharp提供的UsernamePasswordCredentials。下面的修改讓我從倉庫通過局域網取回:

CredentialsHandler credHandler = (_url, _user, _cred) => new DefaultCredentials(); 

(我試圖找出什麼是兩者之間準確的區別;如果我得到了進一步瞭解的話,我會更新的答案)

+4

區別在於使用給定的用戶名和密碼進行身份驗證,'DefaultCredentials'使用您登錄的憑證進行身份驗證。 'UsernamePasswordCredentials'應該適用於Basic和NTLM。 DefaultCredentials應與NTLM和Kerberos一起使用。 – 2014-10-03 12:55:33

+1

'CredentialsHandler credHandler =(_url,_user,_cred)=> creds;'credHandler變量應該命名爲'ch'以使代碼正常工作,但是謝謝您的回答! – DarkWalker 2014-10-23 16:50:11

2

應該使Credentials選項有效的墊片當前有問題(並且不推薦使用),而是將CredentialsProvider作爲回調。

+0

@RovinBhandari你使用的是什麼版本?您是否也可以在其他存儲庫中重現此行爲?你從哪裏取來? – nulltoken 2014-10-01 18:09:29

相關問題