0

我在一个目录中有两张图片:

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;
        }

我不确定为什么在为第二张图片运行这些代码时,应用程序只是挂起。谁能帮我一把?

4

1 回答 1

1

使用 Fiddler 或类似工具检查网络上发生的情况。也许链接没有正确构建?

关于DownloadString方法:

此方法在下载资源时阻塞。要下载资源并在等待服务器响应时继续执行,请使用DownloadStringAsync方法之一。

于 2012-08-10T21:00:42.970 回答