首页 > 解决方案 > 将文件附加到 Azure DevOps 工作项

问题描述

我正在尝试通过 C# 桌面应用程序将文件(屏幕截图)附加到 Azure DevOps 工作项。我设法附加了文件,但它们不是有效的图像文件,这让我相信我在上传它们时做错了。

下面的文档DevOps Create Attachment是 API 调用的请求正文部分,相当模糊。

在此处输入图像描述

GitHub 讨论来看,这个答案似乎表明我只是直接上传二进制内容,这就是我正在做的事情。

在此处输入图像描述

我的代码如下

var img = File.ReadAllBytes(fname);
string query = @"/_apis/wit/attachments?fileName=" + fname + @"&api-version=6.0"
string response = AzureUtils.AttachFile(query, img, "POST", false, "application/octet-stream");

我从文件(变量img)中读取的字节数组作为正文从字面上传递是否正确?

为什么我在 DevOps 中查看它时它不是一个有效文件?

AttachFile 的代码是

public static string AttachFile(string query, byte[] data = null, string method = "GET",
    bool dontUseBaseURL = false, string contentType = "application/json-patch+json")
{
    try
    {
      HttpWebRequest request = WebRequest.Create(query) as HttpWebRequest;
      request.ContentType = contentType;
      request.Method = method;
      request.Proxy.Credentials = CredentialCache.DefaultCredentials;

      request.Headers.Add("Authorization", "Basic " +
        Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{1}", ["AzurePAT"]))));

      if (data != null)
      {
        using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
         {
            writer.Write(data);
         }
      }

      HttpWebResponse response = request.GetResponse() as HttpWebResponse;

      string result = string.Empty;
      using (StreamReader reader = new StreamReader(response.GetResponseStream()))
      {
         result = reader.ReadToEnd();
      }

      request = null;
      response = null;

       return result;
}

标签: apiazure-devopsattachment

解决方案


推荐阅读