Потоковый безопасный доступ к HttpRequest.InputStream в asp.net - PullRequest
0 голосов
/ 29 сентября 2018

Я разрабатываю библиотеку .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);

Меня беспокоит:

Я меняю позициюпотока, к которому может получить доступ код приложения вне моей библиотеки.Другой поток может получить доступ к потоку, прежде чем я восстановлю его (ищу источник).

Что если другой поток (например, задача, созданная кодом, обрабатывающим запрос) читает тот же поток в то же время?

Может ли быть затронуто приложение, использующее мою библиотеку?

Если да - как этого избежать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...