您能否在转换为C#对象的JSON中序列化ByteArrayContent?

您能否在转换为C#对象的JSON中序列化ByteArrayContent?,c#,json,rest,json.net,C#,Json,Rest,Json.net,我在VS Studio中编写了一个C#Web API,并创建了许多DTO,这些DTO被序列化为JSON实体,任何客户端都可以使用这些实体。我的一个API调用是返回一个PDF文件,所以在一些在线研究之后,我设置了一个DTO,其设置格式如下。我在某个地方读到你可以这样做,但不是100%确定: public class MyCustomResult { public bool Success; public DateTime? LastRunDate; public string E

我在VS Studio中编写了一个C#Web API,并创建了许多DTO,这些DTO被序列化为JSON实体,任何客户端都可以使用这些实体。我的一个API调用是返回一个PDF文件,所以在一些在线研究之后,我设置了一个DTO,其设置格式如下。我在某个地方读到你可以这样做,但不是100%确定:

public class MyCustomResult
{
   public bool Success;
   public DateTime? LastRunDate;
   public string ErrorCode;
   public string Message;
   public ByteArrayContent ReportBody;
}
将对象作为IHttpActionResult返回时,我没有收到任何错误:

返回Ok(结果)

我可以在服务器上看到报告字节[]的字节大小约为700K。但是,当我在客户机上检索对象时,JSON实体大约为400B,ByteContentStream中没有字节内容。当我在Postman中运行查询时,我得到一个空的头,因此ByteContentStream似乎不能被Newtonsoft JSON序列化


有什么选择吗?

< P>这里是一个使用<代码> BytErayEngult< /C> >:

的场景。
使用(var req=newhttprequestmessage(HttpMethod.Post,新Urihttps://example.com"))
{
请求内容=新的ByteArrayContent(…);
使用(var resp=await_client.SendAsync(req))
{
var data=wait resp.Content.ReadAsAsync();
}
}
您要做的是:

公共类MyCustomResult
{
公共事业的成功;
公共日期时间?LastRunDate;
公共字符串错误码;
公共字符串消息;

public byte[]ReportBody;//您不会使用
ByteArrayContent
,您只需使用
byte[]
。Newtonsoft将其序列化为Base64字符串。使用者必须将Base64字符串解码回
字节[]
,或者如果它是另一个Newtonsoft客户端,它将自动为您执行此操作。
ByteArrayContent
HttpContent
的一个实现,它应该仅用作响应主体。它不能与JSON response.ahh一起使用,因此参数应该是“byte[]”在C#object中。好的,让我尝试一下,如果一切正常,我将编辑/更新答案。我将添加一个答案,使其更正式/更容易理解。