我有一个在sharepoint server 2010网站上运行的sharepoint webpart,它作为团队项目门户网站,因为它与TFS 2010集成.webpartpart成功部署到网站,我能够看到它。
使用TfsConfigurationServer类,我可以连接到TFS并获取所有项目集合的列表。如果我向前迈进一步,我可以获得每个集合中所有团队项目的列表。当我尝试连接到集合的版本控制服务器时,我的问题出现了。我想连接到版本控制服务器,这样我就可以得到该项目集合下的文件夹/文件列表。
TfsTeamProjectCollection teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId);
try
{
VersionControlServer versionControl = (VersionControlServer)teamProjectCollection.GetService(typeof(VersionControlServer));
TeamProject tp = versionControl.GetTeamProject("MyTeamProject");
RecursionType recursion = RecursionType.Full;
ItemSet itemSet = tp.VersionControlServer.GetItems(tp.ToString(), recursion);
Item[] items = itemSet.Items;
foreach (Item item in items)
{
l = new Label();
l.Text = item.ChangesetId.ToString();
this.Controls.Add(l);
}
}
catch (Exception ex)
{
ex.ToString();
}
上面的代码在Try块之后的第一行失败,即“versioncontrolserver”行。错误显示“重新进行身份验证时不允许更改用户。”为什么要改变用户?用户帐户(我的)可以访问sharepoint和tfs。如果我添加一个WindowsIdentity变量,并在带有断点的调试中运行,我可以确认webpart在我的用户帐户下运行。由于它在versioncontrolserver行上失败,因此它在连接到tfs系统时似乎是重新验证的。如果它正在转换帐户,为什么会这样呢?它试图使用什么帐户?