Cannot access a closed Stream / Reading is not allowed after reader was completed
Имею такой сервис.
При ее вызове есть 4 исхода
Сервис отрабатывает нормально
Получаю ошибку - Cannot access a closed Stream.
Получаю ошибку - Reading is not allowed after reader was completed.
Получаю ошибку - Cannot access a disposed object. Object name: 'HttpRequestStream'.
public async void InputDataValidation2() { var charset = "utf-8"; var logFile = $"{Guid.NewGuid().ToString("N")}.txt"; var outerRequest = HttpContext.Request; var outerResponse = HttpContext.Response; try { outerRequest.Body.Seek(0, SeekOrigin.Begin); var bytes = new Memory<byte>(new byte[outerRequest.ContentLength ?? 0]); await outerRequest.BodyReader.AsStream().ReadAsync(bytes); var body = Encoding.GetEncoding(charset).GetString(bytes.ToArray()); log(body, logFile); var jsonRequest = JsonConvert.DeserializeObject<InputJsonValidationRequest>(body); var result = InputDataValidation(jsonRequest); body = JsonConvert.SerializeObject(result); log(body, logFile); bytes = new Memory<byte>(Encoding.GetEncoding(charset).GetBytes(body)); outerResponse.ContentType = "application/json; charset=utf-8"; await outerResponse.BodyWriter.WriteAsync(bytes); } catch (Exception e) { log(e.Message, logFile); var body = JsonConvert.SerializeObject(new InputJsonValidationResponse { resultCode = -1, resultMessage = e.Message }); var bytes = new Memory<byte>(Encoding.GetEncoding(charset).GetBytes(body)); outerResponse.StatusCode = 500; await outerResponse.BodyWriter.WriteAsync(bytes); } }
В чем может быть дело?
string log(string msg, string fileName = null) {
if (null == fileName) fileName = $"{Guid.NewGuid().ToString("N")}.txt";
using (StreamWriter sr = new StreamWriter($"{logDirectory}\\{fileName}", true))
{
sr.WriteLine(msg);
sr.Close();
}
return fileName;
}