2012-08-10 19 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