Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SOAP将PDF文件作为附件添加到TestTrack_C#_Pdf_Soap_Attachment_Testtrack - Fatal编程技术网

C# 使用SOAP将PDF文件作为附件添加到TestTrack

C# 使用SOAP将PDF文件作为附件添加到TestTrack,c#,pdf,soap,attachment,testtrack,C#,Pdf,Soap,Attachment,Testtrack,在过去的一年里,我最近开始使用C#,所以我对此有些陌生,但通常可以通过一些努力破解一些东西,但这一点让我难以理解。我们在公司使用TestTrack进行开发缺陷/问题跟踪。我已经创建了一个自定义windows窗体应用程序,作为我们其中一个部门的TestTrack前端。它使用SOAP进行连接。我没有使用WPF/WCF,也不想走这条路。我很难找到任何关于如何正确编码PDF附件文件的示例。下面的代码确实在TestTrack中创建了一个已存在问题的附件,但是当您尝试在TestTrack中打开它时,它会弹出

在过去的一年里,我最近开始使用C#,所以我对此有些陌生,但通常可以通过一些努力破解一些东西,但这一点让我难以理解。我们在公司使用TestTrack进行开发缺陷/问题跟踪。我已经创建了一个自定义windows窗体应用程序,作为我们其中一个部门的TestTrack前端。它使用SOAP进行连接。我没有使用WPF/WCF,也不想走这条路。我很难找到任何关于如何正确编码PDF附件文件的示例。下面的代码确实在TestTrack中创建了一个已存在问题的附件,但是当您尝试在TestTrack中打开它时,它会弹出一条错误消息,提示“图像数据不足”。如果您想使用SOAP将文本文件添加到TestTrack,下面的示例确实有效。我想知道我需要在下面更改什么,这样我就可以将一个PDF文件放入TestTrack,然后在TestTrack应用程序中打开它,而不会出现上面提到的错误。提前感谢您的任何输入/帮助

    public void getAttachments(long lSession, CDefect def)
    {
        ttsoapcgi cgiengine = new ttsoapcgi();

        // Lock the defect for edit.
        CDefect lockedDefect = cgiengine.editDefect(lSession, def.recordid, "", false);

        string attachment = "c:\\TEST\\TEST_PDF.PDF";

        CFileAttachment file = new CFileAttachment();
        file.mstrFileName = Path.GetFileName(attachment);

        System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();

        StreamReader reader = new StreamReader(attachment);
        file.mstrFileName = Path.GetFileName(attachment);
        file.mpFileData = enc.GetBytes(reader.ReadToEnd());
        reader.Close();

        CReportedByRecord reprec = lockedDefect.reportedbylist[0];
        CFileAttachment[] afile = reprec.attachmentlist;
            if (afile == null)
            {
                lockedDefect.reportedbylist[0].attachmentlist = new CFileAttachment[1];
                lockedDefect.reportedbylist[0].attachmentlist[0] = file;
            }

            // Save our changes.
            cgiengine.saveDefect(lSession, lockedDefect);
    }
}

下面是修改后的方法,它允许我将PDF附加到SOAP,并将其作为问题的附件放入TestTrack:

        public void getAttachments(long lSession, CDefect def)
    {
        ttsoapcgi cgiengine = new ttsoapcgi();

        // Lock the defect for edit.
        CDefect lockedDefect = cgiengine.editDefect(lSession, def.recordid, "", false);

        string attachment = "c:\\TEST\\TEST_PDF.PDF";

        CFileAttachment file = new CFileAttachment();

        file.mpFileData = File.ReadAllBytes(attachment);
        file.mstrFileName = Path.GetFileName(attachment);

        CReportedByRecord reprec = lockedDefect.reportedbylist[0];
        CFileAttachment[] afile = reprec.attachmentlist;
            if (afile == null)
            {
                lockedDefect.reportedbylist[0].attachmentlist = new CFileAttachment[1];
                lockedDefect.reportedbylist[0].attachmentlist[0] = file;
            }

            // Save our changes.
            cgiengine.saveDefect(lSession, lockedDefect);
    }

想想看,我在寻求帮助的一小时内就找到了解决方案的答案。哎呀。无论如何,我很高兴。:-)一旦这个网站允许,我会在几个小时内发布我的答案。