我正在构建一个网页,使用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();
答案 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)。