Я разрабатываю библиотеку .NET, которая помогает с ведением журналов и может использоваться в приложениях ASP.NET.В моем коде я должен прочитать и проанализировать тело запроса Http.
В настоящее время я делаю это так:
var stream = HttpContext.Request.InputStream;
using (var reader = new StreamReader(
stream,
encoding: Encoding.UTF8,
detectEncodingFromByteOrderMarks: true,
bufferSize: 1024,
leaveOpen: true))
{
Debug.WriteLine(reader.ReadToEnd());
}
// Another thread reads HttpContext.Request.InputStream here ...
stream.Seek(0, System.IO.SeekOrigin.Begin);
Меня беспокоит:
Я меняю позициюпотока, к которому может получить доступ код приложения вне моей библиотеки.Другой поток может получить доступ к потоку, прежде чем я восстановлю его (ищу источник).
Что если другой поток (например, задача, созданная кодом, обрабатывающим запрос) читает тот же поток в то же время?
Может ли быть затронуто приложение, использующее мою библиотеку?
Если да - как этого избежать?