TFS サーバーへのアクセスが制限されているため、コードで管理者アカウントを使用してサーバーに接続するつもりでした。ドメインに参加していないコンピューターにサービスを展開すると、問題なく動作することがわかりました。 、しかし、ドメインに参加しているコンピューターにサービスを展開すると、統合された資格情報が使用されます。助けてくれてありがとう!以下は私のコードです。
Uri tfsUri = Common.Helper.GetCollectionUri();
UserCredential userCredential = new UserCredential("administrator", "pass@word1", "zanewill.net");
TfsTeamProjectCollection col = new TfsTeamProjectCollection(tfsUri, userCredential);
TeamFoundationIdentity identity;
col.EnsureAuthenticated();
col.GetAuthenticatedIdentity(out identity);
管理者の資格情報が必要ですが、ID は常に限定ドメイン アカウントである「zanewill」の資格情報です。
UserCredential のクラスは、 public class UserCredential のようなものです。 ICredentialsProvider { private NetworkCredential networkCredential;
public UserCredential(string userName, string password, string domain) {
networkCredential = new NetworkCredential(userName, password, domain);
}
public System.Net.ICredentials GetCredentials(Uri uri, System.Net.ICredentials myCredentials) {
return networkCredential;
}
public void NotifyCredentialsAuthenticated(Uri uri) {
}
}
次のコードのように NetworkCredential を使用していますが、動作しますが、理由はわかりません。
Uri tfsUri = Common.Helper.GetCollectionUri();
var networkCredential = new NetworkCredential("administrator", "pass@word1", "zanewill.com");
TfsTeamProjectCollection col = new TfsTeamProjectCollection(tfsUri,networkCredential);
TeamFoundationIdentity identity;
col.EnsureAuthenticated();
col.GetAuthenticatedIdentity(out identity);