2017-08-16 50 views
0

我有一個ASP .NET MVC應用程序,允許用戶通過調用API創建工作項。創建工作項後,我將重定向到顯示當前工作項的頁面(另一個API調用)。但是,檢索工作項的API請求的處理速度比創建工作項的速度快,導致顯示不顯示剛剛創建的工作項。我目前正在使用thread.sleep進行測試,但希望能夠以正確的方式處理此問題。團隊服務 - 通過API創建工作項需要比檢索當前工作項更長的時間

這是我的控制器行動處理創建工作項目

WICreator addNewWI = new WICreator(); 
addNewWI.CreateWorkItem(model.SystemTitle, model.SystemDescription); 
Thread.Sleep(2000); 
return RedirectToAction("WorkItems", "Home"); 

這裏後提交按鈕被調用的API來創建工作項

public void CreateWorkItem(string title, string description) 
    { 
     string personalAccessToken = "xxx" 
     string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", "xxx", personalAccessToken))); 
     string project = "xx" 
     string path = "xx" 

     Object[] patchDocument = new Object[3]; 
     patchDocument[0] = new { op = "add", path = "/fields/System.Title", value = title }; 
     patchDocument[1] = new { op = "add", path = "/fields/System.AreaPath", value = path }; 
     patchDocument[2] = new { op = "add", path = "/fields/System.Description", value = description }; 

     using (var client = new HttpClient()) 
     { 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials); 

      var patchValue = new StringContent(JsonConvert.SerializeObject(patchDocument), Encoding.UTF8, "application/json-patch+json"); 

      var method = new HttpMethod("PATCH"); 
      var request = new HttpRequestMessage(method, "https://xx.xx.com/xx/_apis/wit/workitems/xxxapi-version=1.0") { Content = patchValue }; 
      var response = client.SendAsync(request).Result; 

      if (response.IsSuccessStatusCode) 
      { 
       var result = response.Content.ReadAsStringAsync().Result; 
      } 
     } 
    } 
+0

你需要顯示與更新的WICreator –

+0

@ScottChamberlain代碼模型方法 –

回答

0

創建工作的響應項目包含新工作項目的必要信息,因此處理此問題的簡單工作流程爲:

  1. 保存創建工作項目爲對象,並通過使用TempData
  2. 檢索服務器的工作項目發送到動作的響應
  3. 檢查TempData的爲空或不是
  4. 檢查是否有相同的工作項ID的結果第2步,如果TeamData具有價值
  5. 如果沒有在步驟2的結果相同的數據,添加TempData的數據給通過查看
+0

E xactly我所需要的。謝謝! –

相關問題