自定义TFS服务器插件抛出异常TF30063

时间:2016-06-22 20:22:12

标签: c# visual-studio-2013 tfs tfs2013 tfs-sdk

我一直在为我的公司编写一个自定义TFS 2013服务器插件,每当创建新的错误或产品积压项时,它都会自动创建任务。在调试时我可以看到它检测到新的工作项,但是当它尝试连接到TfsTeamProjectCollection时,它会抛出TF30063异常,说我不允许访问服务器。令我感到困惑的是,为了看看后面的代码是否有效,我创建了一个简单的客户端表单应用程序,使用完全相同的代码连接到服务器,它运行得很完美。

我用来连接的代码是:

    string tfsUri = string.Empty;
    tfsUri = @"http://companytfsserver:8080/tfs/defaultcollection";
    TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsUri));
    tfs.EnsureAuthenticated();

我也试过手动设置凭据,但没有运气。此外,如果它有帮助,我将此作为我的向导:http://geekswithblogs.net/BobHardister/archive/2012/10/08/automatically-create-bug-resolution-task-using-the-tfs-2010-api.aspx

我阅读了大量关于人们获得同样例外情况的文档,但我发现的任何内容都没有与这种特殊情况相关,所以任何帮助都会非常感激!

*更新:经过更多挖掘和测试后,它可能与我们的应用程序层有关。我不得不等待熟悉该特定系统的IT人员从会议中回来(周一,我想),但是一旦我确定,我就会更新。< / p>

**更新:我终于明白了,我无法相信它有多么简单。事实证明,用于通过客户端应用程序连接的URI在应用层服务器插件中使用时不起作用。相反,它必须是localhost:8080 / tfs / defaultcollection。现在给我带来了完美的感觉,但它以前从未想过我。

1 个答案:

答案 0 :(得分:0)

正如jessehouwing所说,因为您正在使用集合uri "http://companytfsserver:8080/tfs/defaultcollection"您必须拥有使用您的帐户和TFS服务帐户的Prioject(集合)的权限。

// Connect to TFS Work Item Store
ICredentials networkCredential = new NetworkCredential(tfsUsername, tfsPassword, domain);
Uri tfsUri = new Uri(@"http://my-server:8080/tfs/DefaultCollection");
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(tfsUri, networkCredential);
WorkItemStore witStore = new WorkItemStore(tfs);