我有一个在 sharepoint server 2010 站点上运行的 sharepoint webpart,它作为团队项目门户,因为它与 TFS 2010 集成。webpart 成功部署到该站点,我能够看到它。
使用 TfsConfigurationServer 类,我可以连接到 TFS 并获取所有项目集合的列表。如果我再往下走 1 步,我可以获得每个集合中所有团队项目的列表。当我尝试连接到版本控制服务器进行收藏时,我的问题就出现了。我想连接到版本控制服务器,以便获取该项目集合下的文件夹/文件列表。
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 系统时似乎正在重新进行身份验证。如果是切换帐户,为什么会这样?它试图使用什么帐户?