workitem.Save()将多个(重复)项存储到TFS中

时间:2017-08-02 08:06:11

标签: c# api recursion tfs

我使用下面的代码将工作项存储到TFS中,但有时当TFS不可用/或某些异常时,它会将4个具有相同详细信息的项存储到TFS中。我正在使用下面的代码。

private static void SaveWorkItemtoTFS(WorkItem wi, ref int retryCount)
        {

            try
            {                
                retryCount++;                
                wi.Save();
            }
            catch (Exception ex)
            {
                if (retryCount <= 3)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(5));
                    wi.SyncToLatest();
                    SaveWorkItemtoTFS(wi, ref retryCount);
                }
                else
                {
                    throw ex;
                }
            }
        }

我只想存储唯一的商品。但它存储了4个具有相同细节的项目。你能帮忙吗?

例外情况是: 技术信息(针对管理员):   操作已经超时---&gt; System.Net.WebException:操作已超时    在System.Net.HttpWebRequest.GetResponse()    在Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.SendRequestAndGetResponse(HttpWebRequest webRequest,WebException&amp; webException) --- End of inner exception stack trace --- at TfsProj.BusinessLogic.SaveWorkItemtoTFS(WorkItem wi,Int32&amp; retryCount) at TfsProj.BusinessLogic.SaveWorkItemtoTFS(WorkItem) wi,Int32&amp; retryCount) at TfsProj.BusinessLogic.SaveWorkItemtoTFS(WorkItem wi,Int32&amp; retryCount) at TfsProj.BusinessLogic.SaveWorkItemtoTFS(WorkItem wi,Int32&amp; retryCount) at TfsProj.BusinessLogic .AddNewCertificationTaskIntoTFS(RequestModel objRequestModel,String requestId,String clientReqId)`

此错误仅发生一次,也无法重现此错误。

1 个答案:

答案 0 :(得分:0)

根据异常,从TFS服务器获取响应时会发生错误。当您通过Save()方法创建工作项时,它将首先将请求发送到TFS服务器,然后等待响应以检查是否正在成功创建工作项。所以在您的问题中,条件是创建工作项请求已成功发送并且工作项已成功创建,但代码未从TFS服务器获得响应,这会导致异常抛出并再次尝试三次。