Использование JSON.NET для сериализации объекта в поток ответов HttpClient

Аннотация

Привет, я работаю над проектом, в котором необходимо отправить потенциально огромный JSON некоторого объекта через HttpClient, 10-20 мегабайт JSON - типичный размер. Чтобы сделать это эффективно, я хочу использовать потоки, как с Json.Net для сериализации объекта, так и потоки для публикации данных с помощью HttpClient.

проблема

Вот фрагмент для сериализации с Json.net, чтобы работать с потоками, Json.net ожидает поток, в который он будет записывать:

public static void Serialize( object value, Stream writeOnlyStream )
{
    StreamWriter writer = new StreamWriter(writeOnlyStream);  <-- Here Json.net expects the stream to be already created
    JsonTextWriter jsonWriter = new JsonTextWriter(writer);
    JsonSerializer ser = new JsonSerializer();
    ser.Serialize(jsonWriter, value );
    jsonWriter.Flush();
}

В то время как HttpClient ожидает поток, из которого он будет читать:

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://localhost:54359/");

    var response = await client.PostAsync("/api/snapshot", new StreamContent(readOnlyStream)); <-- The same thing here, HttpClient expects the stream already to exist

    ... 
}

Таким образом, в конечном итоге это означает, что оба класса ожидают, что поток будет создан кем-то другим, но нет потоков ни для Json.Net, ни для HttpClient. Таким образом, проблема, кажется, может быть решена путем реализации потока, который будет перехватывать запросы на чтение, сделанные для потока только для чтения, и выдавать записи по запросу из потока только для записи.

Вопрос

Возможно, кто-то уже сталкивался с такой ситуацией и, возможно, нашел уже реализованное решение этой проблемы. Если это так, пожалуйста, поделитесь им со мной,

Заранее спасибо!

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

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