TF30063:您没有访问https://test.visualstudio.com/DefaultCollection

本文关键字:test visualstudio DefaultCollection com 访问 TF30063 https | 更新日期: 2023-09-27 17:51:22

我正在尝试连接到TFS并使用下面的代码验证用户。但是我得到错误:

TF30063:您没有权限访问https://test.visualstudio.com/DefaultCollection.

var netCred = new NetworkCredential("test@live.in", "password");
                var windowsCred = new WindowsCredential(netCred);
                var tfsCred = new TfsClientCredentials(windowsCred);
                tfsCred.AllowInteractive = false;
                var tpc = new TfsTeamProjectCollection(tfsUri, tfsCred);
                tpc.Authenticate();

当我在代码下面运行时,它会提示我必须输入凭据的窗口。

var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("https://test.visualstudio.com/DefaultCollection"));
            var store = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));

这个应用程序将由外部人员使用,我需要静默登录到TFS。

我看到下面的解决方案,但我不能要求每个用户都这样做。

http://blogs.msdn.com/b/buckh/archive/2013/01/07/how-to-connect-to-tf-service-without-a-prompt-for-liveid-credentials.aspx

TF30063:您没有访问https://test.visualstudio.com/DefaultCollection

您的用户将必须使用Live ID/MSA登录一次,他们可以选中保存其凭据的框,以便将来不会提示他们。在未来,Visual Studio Online可能会转向使用Azure Active directory/Azure Access Control Services的解决方案,这将允许你使用其他凭证类型,现在你要么需要让你的用户启用基本身份验证,要么让他们对VSO进行一次身份验证,并让他们选中"保存凭证"复选框,以便将来不会提示他们。

Uri collectionUri = new Uri("https://youraccount.visualstudio.com:443/defaultcollection");
UICredentialsProvider credentialProvider = new UICredentialsProvider();
var tfs = TfsTeamProjectCollectionFactory
               .GetTeamProjectCollection(collectionUri, new UICredentialsProvider());
tfs.EnsureAuthenticated();

如果您想使用基本凭据连接,您也可以使用以下代码(在为您想使用的帐户启用基本凭据后):

NetworkCredential netCred = new NetworkCredential(
    "someone@yahoo.com",
    "password");
BasicAuthCredential basicCred = new BasicAuthCredential(netCred);
TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);
tfsCred.AllowInteractive = false;
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(
    new Uri("https://YourAcct.visualstudio.com/DefaultCollection"),
    tfsCred);
tpc.Authenticate();