使用tfs api将工作项插入到tfs中

时间:2014-12-05 20:28:11

标签: c# asp.net visual-studio tfs tfs-sdk

我正在构建一个网页,使用TFS API将TFS工作项插入TFS。

我正在使用我的凭据连接到TFS服务器。

每当有人使用TFS网页创建TFS工作项时,它就会创建   我名下的工作项,因为我是连接到TFS服务器的工作项。       有没有办法我可以创建一个工作项与用户登录我的       Web应用程序并创建了工作项?

我可以访问用户名,但不能访问用户密码

protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
        {
        Uri url = new Uri("url");

            NetworkCredential nc = new NetworkCredential();

            TfsTeamProjectCollection coll = new TfsTeamProjectCollection(url, nc);

            coll.EnsureAuthenticated();

            WorkItemStore workItemStore = coll.GetService<WorkItemStore>();
            Project teamproject = workItemStore.Projects["ABC"];
            WorkItemType workItemType = teamproject.WorkItemTypes["Issue"];

            WorkItem wi = new WorkItem(workItemType);

            wi.Title = ((TextBox)FormView1.FindControl("txtTaskTitle")).Text;   

            wi.Save();

        }

您能否告诉我如何才能拥有登录该应用程序的人员的姓名 作为创建TFS工作项的人?

我也尝试了以下内容:

       Uri url = new Uri("url");

        var collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(url);
        var workItemStore = new WorkItemStore(collection, WorkItemStoreFlags.BypassRules);

        Project teamproject = workItemStore.Projects["ABC"];
        WorkItemType workItemType = teamproject.WorkItemTypes["Issue"];

        WorkItem wi = new WorkItem(workItemType);

        string s = "Name";
        wi.Fields["System.CreatedBy"].Value = s;

        wi.Title = "Test Item";
        wi.Save();

3 个答案:

答案 0 :(得分:0)

您可以尝试设置“创建者”字段:

wi.Fields["System.CreatedBy"].Value = "TfsService";

the answer on this thread,您可能需要成为项目收集服务帐户的成员。

另请参阅this thread。看起来您可能只能修改第一个修订版本上的“创建者”字段...或者,您可以尝试创建WorkItemStore(而不是使用服务)并使用此标志:WorkItemStoreFlags.BypassRules

答案 1 :(得分:0)

试试这个:

TfsTeamProjectCollection coll = new TfsTeamProjectCollection(url,CredentialCache.DefaultCredentials);

摆脱整个网络凭据。

答案 2 :(得分:0)

你需要做两件事。首先按照Etienne的建议,删除凭据或传递默认值。

其次,您需要在Web应用程序中启用“模拟”:http://msdn.microsoft.com/en-us/library/134ec8tc(v=vs.100).aspx

如果您在TFS服务器上运行Web应用程序,那该工作正常。但是,如果要在其他地方运行它,您还需要一个kerberos令牌,以允许您将凭据传递给TFS服务器。这通常称为双跳认证。要使其正常运行,您必须使用Active Directory执行一些giggery-pokery,并为您运行网站的帐户设置服务主体名称(SPN)。