【发布时间】:2019-12-05 16:32:41
【问题描述】:
我正在使用 dotnet Core 3.x 开发 WPF Web 客户端,并且正在使用 System.Text.Json API。我正在尝试使用Stream 在对象之间传递数据,以尽量减少峰值内存使用量,因为正在发送一些大消息。
到目前为止,我编写的包装器方法如下所示:
public async Task<TResponse> PutItem<TItem, TResponse>(string path, TItem item)
{
HttpResponseMessage response;
await using (Stream stream = new MemoryStream())
{
await JsonSerializer.SerializeAsync(stream, item);
var requestContent = new StreamContent(stream);
requestContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response = await _client.PutAsync(path, requestContent);
}
if (!response.IsSuccessStatusCode || response.Content == null)
{
return default;
}
string content = await response.Content.ReadAsStringAsync();
TResponse decodedResponse = JsonSerializer.Deserialize<TResponse>(content);
return decodedResponse;
}
但是,当 PUT 到服务器时,它似乎没有写入任何内容。
我看到早期 API 的用户使用 PushStreamContent 类,但是这在 dotnet Core 中似乎不存在。
非常感谢任何想法,谢谢!
【问题讨论】:
-
序列化后是否设置
stream.Position = 0? -
谢谢@dbc 现在解决了这个问题。
标签: c# json .net-core system.text.json