C# 从 HTTPResposeMessage 获取字节数组

C# Get Byte Array from HTTPResposeMessage

我有一个 API returns PDF 文件作为字节数组:

HttpResponseMessage fileResponse = new HttpResponseMessage
{
    Content = new ByteArrayContent(report) //here the byte array is >80000 in length
};
fileResponse.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
return fileResponse;

在客户端,我有:

HttpResponseMessage result = null;
using (HttpClient client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }))
{
    result = await client.GetAsync(getFileURL);
}
Byte[] bytes = response.Content.ReadAsByteArrayAsync().Result;

此代码在升级到 .Net 5 之前一直有效。

现在字节的长度只有 <350。正如我在其他解决方案中读到的那样,我已尝试将其从 base64 字符串转换为它,但这会引发错误,指出它不是有效的 base64 字符串:

string base = response.Content.ReadAsStringAsync().Result.Replace("\"", string.Empty);
byte[] byte = Convert.FromBase64String(base);

这是替换后的基数,下一行表示它不是有效的 base64 字符串。看起来像 json 但没有字节数组:

{version:{major:1,minor:1,build:-1,revision:-1,majorRevision:-1,minorRevision:-1},content:{headers:[{key:Content-Type,value:[application/pdf]}]},statusCode:200,reasonPhrase:OK,headers:[],trailingHeaders:[],requestMessage:null,isSuccessStatusCode:true}

关于如何从响应中获取字节数组有什么想法吗?

我开始工作的解决方案不是 API return HttpResponseMessage,而是直接 return 字节数组。

然后在客户端将它从 base64 字符串转换为我能够写入 PDF 的正确字节数组。