0

ディレクトリに2枚の写真があります。

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」句の2番目の項目は、この呼び出しでハングします。

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

2番目の画像でこれらのコードを実行しているときに、アプリがハングする理由がわかりません。誰か私に手を貸してもらえますか?

4

1 に答える 1

1

Fiddlerなどを使用して、ネットワークで何が起こっているかを確認します。リンクが適切に構築されていない可能性がありますか?

DownloadStringメソッドについて:

このメソッドは、リソースのダウンロード中にブロックします。リソースをダウンロードして、サーバーの応答を待っている間に実行を続行するには、DownloadStringAsyncメソッドの1つを使用します。

于 2012-08-10T21:00:42.970 に答える