2013-03-05 14 views
0

當代碼運行到2號線,Windows會顯示一個彈出輸入用戶名,密碼TFS訪問:直接輸入用戶信息查詢時工作項目

TeamProjectCollection = new TfsTeamProjectCollection(new Uri(url), new UICredentialsProvider()); 
TeamProjectCollection.Connect(Microsoft.TeamFoundation.Framework.Common.ConnectOptions.IncludeServices); 
TeamProjectCollection.EnsureAuthenticated(); 
IsConnected = true; 

有什麼辦法來分配的用戶名,密碼自動無登錄從窗口彈出。

謝謝。

+0

當它提示輸入憑據時,這意味着進程正在運行的憑據對服務器沒有權限。 – 2013-03-07 13:50:41

回答

0

如果你想直接將用戶憑據,而不是使用一個正在運行的進程,以下爲我工作:

WindowsCredential credentials = new WindowsCredential(new NetworkCredential(username, domain, password), new MyCredentials(username, domain, password)); 
TfsTeamProjectCollection connectedTPC = new TfsTeamProjectCollection(tfsUrl, new TfsClientCredentials(credentials)); 

這是一個有點奇怪提供憑據兩次,但沒有MyCredentials我將不會從TFS得到答案,不知道爲什麼。

public class MyCredentials : ICredentialsProvider 
{ 
    private NetworkCredential credentials; 
    #region ICredentialsProvider Members 
    public MyCredentials(string user, string domain, string password) 
    { 
     credentials = new NetworkCredential(user, password, domain); 
    } 

    public ICredentials GetCredentials(Uri uri, ICredentials failedCredentials) 
    { 
     return credentials; 
    } 

    public void NotifyCredentialsAuthenticated(Uri uri) 
    { 
     // who cares 
    } 

    #endregion 
}