我使用下面的代码将工作项存储到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)`
此错误仅发生一次,也无法重现此错误。
答案 0 :(得分:0)
根据异常,从TFS服务器获取响应时会发生错误。当您通过Save()
方法创建工作项时,它将首先将请求发送到TFS服务器,然后等待响应以检查是否正在成功创建工作项。所以在您的问题中,条件是创建工作项请求已成功发送并且工作项已成功创建,但代码未从TFS服务器获得响应,这会导致异常抛出并再次尝试三次。