从 WebApi 中的 HttpRequestMessage.Content 检索的流中检索数据

Retrieve data from a stream retrieved from HttpRequestMessage.Content in WebApi

(子问题:如何从 WebAPI2 中的 PushStreamContent 中检索正文?)

我想从一个 API 向另一个 API 发送一条压缩消息。我通过流式传输内容来做到这一点。我目前有以下逻辑:

发送逻辑(通过 Web 发送 PushStreamContentAPI2):

private async Task InitPushStreamContent(Stream stream, HttpContent content, TransportContext transportContext)
{
    var tstText = "Testing 1-2-3";

    var byteArray = Encoding.ASCII.GetBytes(tstText);
    await new MemoryStream(byteArray).CopyToAsync(stream);

    stream.Close();
}
public async Task Execute() {
  using (PushStreamContent pushContent = new 
  PushStreamContent(InitPushStreamContent))
  {
    var requestMessage = new HttpRequestMessage
    {
        Content = pushContent
    };
    return await ResendMessagesOtherStage("someParameter", "someParameter",
        "someParameter",
        "someParemeter", requestMessage);
  }
}

检索逻辑(另一个 API 检索流):

public async Task<IHttpActionResult> UploadSomethingAsync(HttpRequestMessage request)
{
   var stream = await request.Content.ReadAsStreamAsync();
   var length = (int)stream.Length;
   var byteArray = new byte[length];
   var message = Encoding.ASCII.GetString(byteArray, 0, byteArray.Length);
}

The message I retrieve is not:

"Testing 1-2-3"

但是是:

{"Content":{"Headers":[{"Key":"Content-Type","Value":["application/octet-stream"]}]}}

我不确定我在监督什么...我在检索 zip 文件时得到的结果相同。

我通过删除 HttpRequestMessage 包装器并更改 HttpClient 接收器以使用接受 HttpContent 的 PostAsync 方法发送请求来解决我的问题。 我以前使用接受 HttpRequestMessage 的通用 SendAsync 方法。

我认为问题在于,通过将内容包装在 HttpRequestMessage 对象中,传出请求中从未触发 pushStreamContent 的方法。也许 HttpRequestMessage 与 PushStreamContent 类型不兼容?