TF30063:您未获得授权...程序访问无法正常工作

时间:2017-12-04 15:47:05

标签: c# azure-devops

answer中提供的以下代码确实运行了一段时间,但现在它正在抛出 Microsoft.TeamFoundation.TeamFoundationServerUnauthorizedException:' TF30063:您无权访问https:// { mysite} .visualstudio.com /.&# 39; 再次。

var credentials = new VssClientCredentials();
credentials.PromptType = CredentialPromptType.PromptIfNeeded;

var teamProjects = new TfsTeamProjectCollection(tfsCollectionUri, credentials);
teamProjects.EnsureAuthenticated();         // exception thrown

如何解决此问题?

更新奇怪,

  1. 在执行teamProjects.EnsureAuthenticated();之前,调试器会为PromptIfNeeded读取credentials.PromptType
  2. 抛出异常并且调试器已停止执行后,它会为DoNotPrompt读取credentials.PromptType
  3. 观察 上面的代码在控制台应用程序中运行良好,但无法在Windows窗体应用程序中工作(即抛出异常)。

    Q1 如何让上述代码在Windows窗体应用程序中运行?

2 个答案:

答案 0 :(得分:3)

如果你在Task(即一个单独的线程)中执行上面的代码,它就可以了。如果凭据在注册表中的位置不存在或过时(请参阅此answer),则会打开一个窗口,您可以自行进行身份验证。

任何人都可以解释为什么会这样吗?

答案 1 :(得分:2)

VS已添加一个注册表项来存储凭据,尝试删除以下路径中的条目:

  

HKEY_CURRENT_USER \ SOFTWARE \微软\ VSCommon \ 14.0 \ ClientServices \ TokenStorage \ VisualStudio的\ VssApp

<强>更新

另外,请尝试下面的代码以查看它是否有效:

 var credentials = new VssClientCredentials();
 credentials.PromptType = CredentialPromptType.PromptIfNeeded;
 credentials.Storage = new VssClientCredentialStorage(storageKind: "VssApp2", storageNamespace: "VisualStudio");
 var aTeamProjects = new TfsTeamProjectCollection(new Uri("https://xxxxx.visualstudio.com/"), credentials);
 aTeamProjects.EnsureAuthenticated();