Как добавить вложение в пользовательскую историю с помощью Rally REST .NET

Мы в процессе переноса нашего кода .NET Rally из SOAP в REST .NET API. Пока что все хорошо, REST API кажется более быстрым и более простым в использовании, поскольку не существует WSDL для разбиения при каждом изменении пользовательских полей рабочего продукта в Rally Workspace.

Однако у меня возникли проблемы с одной вещью, поскольку мы пытаемся воспроизвести возможность загрузки вложений. Мы следуем очень похожей процедуре, описанной в этой публикации:

Rally SOAP API - Как добавить вложение в иерархическое требование

В результате изображение считывается в System.Drawing.Image. Мы используем функцию ImageToByteArray для преобразования изображения в байтовый массив, который затем присваивается AttachmentContent, который создается первым.

Затем вложение создается и подключается как к AttachmentContent, так и к HierarchicalRequirement.

Все события творения работают отлично. Объект контента создается отлично. Затем новое вложение под названием & quot; Image.png & quot; создается и связывается с историей. Но когда я загружаю полученное вложение из Rally, Image.png имеет ноль байтов! Я пробовал это с разными изображениями, JPEG, PNG и т. Д., Все с одинаковыми результатами.

Выдержка из кода, показывающего наш процесс, приведена ниже. Есть ли что-то очевидное, чего мне не хватает? Заранее спасибо.

    // .... Read content into a System.Drawing.Image called imageObject ....

    // Convert Image to byte array
    byte[] imageBytes = ImageToByteArray(imageObject, System.Drawing.Imaging.ImageFormat.Png);
    var imageLength = imageBytes.Length;

    // AttachmentContent
    DynamicJsonObject attachmentContent = new DynamicJsonObject();
    attachmentContent["Content"] = imageBytes ;

    CreateResult cr = restApi.Create("AttachmentContent", myAttachmentContent);
    String contentRef = cr.Reference;
    Console.WriteLine("Created: " + contentRef);

    // Set up attachment
    DynamicJsonObject newAttachment = new DynamicJsonObject();
    newAttachment["Artifact"] = story;
    newAttachment["Content"] = attachmentContent;
    newAttachment["Name"] = "Image.png";
    newAttachment["ContentType"] = "image/png";
    newAttachment["Size"] = imageLength;
    newAttachment["User"] = user;


    // Create the attachment in Rally
    cr = restApi.Create("Attachment", newAttachment);

    String attachRef = cr.Reference;
    Console.WriteLine("Created: " + attachRef);

}

public static byte[] ImageToByteArray(Image image, System.Drawing.Imaging.ImageFormat format)
{
    using (MemoryStream ms = new MemoryStream())
    {
        image.Save(ms, format);

        // Convert Image to byte[]                
        byte[] imageBytes = ms.ToArray();
        return imageBytes;
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос