我在MS Team Foundation Server上作为特定用户进行身份验证时遇到问题。在旧版本中,它看起来像:
teamFoundationCredential = new System.Net.NetworkCredential("<USERNAME>", "<PASSWORD>", "<DOMAIN>");
TeamFoundationServer tfs = new TeamFoundationServer("http://mars:8080/", teamFoundationCredential);
有人可以告诉我2010版的等值。到目前为止,我有:
ICredentialsProvider cred = null;
tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://asebeast.cpsc.ucalgar.ca:8080/tfs/DefualtCollection"));
tfs.EnsureAuthenticated();
由于
答案 0 :(得分:13)
对于TFS 2010,请使用以下内容:
TfsTeamProjectCollection collection = new TfsTeamProjectCollection(
new Uri("http://asebeast.cpsc.ucalgar.ca:8080/tfs/DefaultCollection",
new System.Net.NetworkCredential("domain_name\\user_name", "pwd"));
collection.EnsureAuthenticated();
答案 1 :(得分:4)
我一直有同样的问题。以上解决方案对我不起作用,实在无法弄清楚原因。我一直得到一个演员异常。 花了一天时间试图解决这个问题 - 所以我认为我会分享我目前解决问题的方法。 我创建了自己的内部类来实现ICredentialsProvider - 如下所示:
private 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)
{
throw new NotImplementedException();
}
#endregion
}
然后我实例化它并将其传递到下面:
MyCredentials credentials = new MyCredentials(UserName, Password, Domain);
TfsTeamProjectCollection configurationServer =
TfsTeamProjectCollectionFactory.GetTeamProjectCollection(
new Uri(tfsUri), credentials);
请注意,我还没有实现NotifyCredentialsAuthenticated - 不确定这实际上是做什么的,所以留下了NotImplementedException,所以我可以捕获它的调用,到目前为止还没有发生。现在已成功连接到TFS。
答案 2 :(得分:0)
我使用这种方法连接到旧的TFS 2008服务器时遇到了一些问题,但解决我问题的方法非常简单:
首先我将TFS Url定义为:
private const string Tfs2008Url = @"http://servername:8080/tfs/";
static readonly Uri Tfs2008Uri = new Uri(Tfs2008Url);
URL中使用的路径是我们在通过VisualStudio连接时使用的路径,因此我认为这在API调用中必须相同,但是当我尝试使用以下身份验证时,我得到了TF31002 / 404错误:
var collection = new TfsTeamProjectCollection(Tfs2008Uri,new NetworkCredential("AdminUser","password","domain_name"));
collection.EnsureAuthenticated();
但是当我将Url更改为TFS根目录时,它验证了OK!
private const string Tfs2008Url = @"http://servername:8080/";
static readonly Uri Tfs2008Uri = new Uri(Tfs2008Url);
不知道这是否对任何人有所帮助,但它确实为我做了诀窍!
答案 3 :(得分:0)
这对我来说非常有用:
_tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri);
_tfs.ClientCredentials = new TfsClientCredentials(new WindowsCredential(new NetworkCredential("myUserName", "qwerty_pwd", "myDomainName")));
_tfs.EnsureAuthenticated();