[英]insert work item into tfs using tfs api
我正在构建一个网页,以使用 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();
尝试这个:
TfsTeamProjectCollection coll = new TfsTeamProjectCollection(url,CredentialCache.DefaultCredentials);
摆脱整个网络凭据的东西。
你需要做两件事。 首先按照 Etienne 的建议删除凭据或传递默认值。
其次,您需要在您的 Web 应用程序中启用“模拟”:http ://msdn.microsoft.com/en-us/library/134ec8tc(v=vs.100).aspx
如果您在 TFS 服务器上运行您的 Web 应用程序,那效果很好。 但是,如果您想在其他地方运行它,您还需要一个 kerberos 令牌以允许您将凭据传递到 TFS 服务器。 这通常称为双跳身份验证。 要使其正常工作,您必须对 Active Directory 进行一些操作,并为您运行网站的帐户设置服务主体名称 (SPN)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.