2012-08-10 41 views
0

我有一個目錄的兩個圖片:應用程序掛在XMLString = client.DownloadString(rootURL + basePolicyNumber);

IMG_MGR_VAH007157100_d68807cb-8bd5-4ca8-861d-d878fa7e20b9.tiff IMG_MGR_VAH007157200_121e8ae3-8e88-4775-be1e-a833e1c1eb51.tiff

我有一個按鈕:

private void btnUpload_Click(object sender, EventArgs e) 
     { 
      //check if all files in this folder are .tiff. 

      finalImages = Directory.GetFiles(AppVars.FinalPolicyImagesDirectory); 

      if (finalImages.Length == 0) 
      { 
       MessageBox.Show("There are no TIFF files to be uploaded. Please generate files first.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      } 
      else 
      { 
       Web web = new Web(); 
       XML xml = new XML(); 

       //The first item in this foreach works fine. The second item gets hung. 
       foreach (string tiffFile in finalImages) 
       { 
        PolicyNumber = Path.GetFileName(tiffFile).Substring(8, 12); 

        basePolicyNumber = PolicyNumber.Remove(PolicyNumber.Length - 2); 
        basePolicyNumber = basePolicyNumber + "00"; 

        finalPolicyName = Path.GetFileName(tiffFile); 

       //THIS IS WHERE I RUN INTO PROBLEMS......BUT ONLY WITH THE SECOND FILE IN THE FOREACH CLAUSE. 
        PolicyUUID = web.GetPolicyUUID(AppVars.pxCentralRootURL, basePolicyNumber); 

        if (!string.IsNullOrEmpty(PolicyUUID) == true) 
        { 
         ixLibraryPolicyBucketURL = AppVars.ixLibraryRootURL + "policy_" + PolicyUUID + "/objects/"; 

         try 
         { 
          httpResponse = web.UploadFileToixLibrary(ixLibraryPolicyBucketURL, tiffFile); 
          xml.GeneratePayLoad(ixLibraryPolicyBucketURL + finalPolicyName + ".tiff", finalPolicyName); 

          //web.pxCentralPOST(ixLibraryPolicyBucketURL + "/IMG_MGR_37722779-7487-4d47-a669-ac33a61dceb2.tiff", AppVars.pxCentralRootURL + PolicyUUID, AppVars.pxCentralXMLPayloadFilePath); 

          MessageBox.Show(httpResponse); 
         } 
         catch (Exception ex) 
         { 
          MessageBox.Show(ex.Message); 
         } 
        } 
       } 
      }  
     } 

了 「的foreach」 節中的第二項被掛在該呼叫:

PolicyUUID = web.GetPolicyUUID(AppVars.pxCentralRootURL,basePolicyNumber);

下面是這個類/方法的代碼:

public string GetPolicyUUID(string rootURL, string basePolicyNumber) 
     { 
      string PolicyUUID = ""; 

      using (WebClient client = new WebClient()) 
      { 
       NetworkCredential credentials = new NetworkCredential(); 
       credentials.UserName = AppVars.Username; 
       credentials.Password = AppVars.Password; 
       client.Credentials = credentials; 

       if (DoesPageExist(rootURL + basePolicyNumber) == true) 
       { 
        try 
        { 
         XmlDocument doc = new XmlDocument(); 

         string XMLString = ""; 

         //the app stops working here. it just hangs, no errors or anything. IT WORKS THE FIRST TIME AROUND. 
         XMLString = client.DownloadString(rootURL + basePolicyNumber); 

         doc.LoadXml(XMLString); 

         var node = doc.DocumentElement.SelectSingleNode("//Identifier[@name='InsightPolicyId']"); 

         if (node != null && node.Attributes["value"] != null) 
         { 
          var val = node.Attributes["value"].Value; 
          PolicyUUID = val.ToString(); 
         } 
        } 
        catch (WebException ex) 
        { 
         MessageBox.Show(ex.Message); 
        } 
       } 
       else 
       { 
        MessageBox.Show("Page does not exist. This means that the policy number of the picture you're trying to upload does not exist in pxCentral. Please verify its name. The policy number in questoin is " + basePolicyNumber + ".", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); 
       } 
      } 
      return PolicyUUID; 
     } 

我不知道在運行這些代碼的第二張照片爲什麼,應用程序只是掛起。任何人都可以幫我一把嗎?

+0

沒有大聲笑!如果我通過調試,我一行一行,然後一旦我到達XMLString = client.DownloadString(rootURL + basePolicyNumber);沒有任何反應,黃色箭頭消失! – Testifier 2012-08-10 20:58:15

回答

1

使用Fiddler或其他類似工具檢查網絡上發生了什麼。也許鏈接沒有正確構建?

關於DownloadString方法:

這種方法塊在下載資源。要下載資源並在等待服務器的響應時繼續執行,請使用DownloadStringAsync方法之一。

+0

即時嘗試使用DownloadStringAsync,但它要求「System.URI」作爲參數。我試圖使用一個字符串。我將如何去傳遞一個字符串參數給DownloadStringAsync? – Testifier 2012-08-10 21:04:33

+0

請查閱MSDN文檔,http://msdn.microsoft.com/en-us/library/z6c2z492.aspx – 2012-08-10 21:05:42