我正在构建一个 asp.net webforms站点,该站点可以连接到我们在Microsoft ( http://companyname.visualstudio.com ) 上托管的 tfs 并从中获取数据。当我使用 Cassini 运行项目时,它运行良好,因为它从浏览器获取身份验证。但我想从后面的代码中做到这一点。
我尝试了各种设置,例如
var tfs = new TfsTeamProjectCollection(CollectionUri, new UICredentialsProvider());
[现在作为方法已弃用,不应使用]
或者
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(CollectionUri);
甚至与
var tfs = new TfsTeamProjectCollection(CollectionUri, new NetworkCredential("windowsliveid","password"));
我没有域,因为它是 Windows Liveid
接着
tfs.EnsureAuthenticated();
我也通过了uri
var CollectionUri = new Uri("https://companyname.visualstudio.com/DefaultCollection/");
关于如何正确验证的任何想法。我很想提示身份验证窗口或直接提供用户名和密码。
- - - - - - - - - - - - - - - 解决了 !!!---------------------------------
这是在马丁伍德沃德非常有用的建议之后进行一些谷歌搜索后的解决方案。
第一个备用凭据必须通过 TFS 帐户激活。然后可以将代码更改为可以正常工作的代码:)
请记住,您需要拥有最新版本的 VS 2012(至少 update1)才能使代码正常工作。否则你不能引用 BasicAuthCredential。
var nc = new NetworkCredential("username", "password");
var bc = new BasicAuthCredential(nc);
var tfsc = new TfsClientCredentials(bc) {AllowInteractive = false};
var tfs = new TfsTeamProjectCollection(CollectionUri, tfsc);
tfs.Authenticate();
这是引用的dll。
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;