Я действительно не понимаю, что происходит ниже.Если я просто попытаюсь вернуть MemoryStream, созданный в операторе using, он не будет работать.Однако, если я вызываю ToArray и создаю другой поток, он прекрасно работает.Я уже пытался извлечь первый MemoryStream из оператора using, но результат тот же.
using (MemoryStream memoryStream = new MemoryStream())
{
using (StreamWriter streamWriter = new StreamWriter(memoryStream))
{
using (JsonWriter jsonWriter = new JsonTextWriter(streamWriter))
{
JsonSerializer jsonSerializer = new JsonSerializer();
jsonSerializer.Converters.Add(new JavaScriptDateTimeConverter());
jsonSerializer.NullValueHandling = NullValueHandling.Ignore;
jsonSerializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
jsonSerializer.PreserveReferencesHandling = PreserveReferencesHandling.None;
jsonSerializer.Serialize(jsonWriter, account);
streamWriter.Flush();
}
}
// Works
return new MemoryStream(memoryStream.ToArray());
// Doesn't work
return memoryStream;
}