私は最近、この 1 年間で C# を使い始めたので、これには少し慣れていませんが、通常は多少の努力で物事をハックすることができますが、これは私を逃れています。当社では、開発バグ/問題追跡に TestTrack を使用しています。部門の 1 つで TestTrack のフロントエンドとなるカスタム Windows フォーム アプリを作成しました。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);
}
}