簡體   English   中英

使用 tfs api 將工作項插入到 tfs 中

[英]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();

您可以嘗試設置創建者字段:

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

根據此線程上的答案,您可能需要成為 Project Collection Service Accounts 的成員。

另外,請參閱此線程 看起來您可能只能在第一次修訂時修改 Created By 字段...或者,您可以嘗試創建 WorkItemStore(而不是使用服務)並使用此標志: WorkItemStoreFlags.BypassRules

嘗試這個:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM