在ASP.NET中对HttpRequest.InputStream的线程安全访问

时间:2018-09-29 10:14:22

标签: c# asp.net .net multithreading thread-safety

我开发了一个.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);

我的担心是:

我更改了可由库外部的应用程序代码访问的流的位置。其他线程可以在恢复流之前访问流(寻求源)。

如果其他线程(例如,由处理请求的代码创建的任务)同时读取同一流该怎么办?

使用我的库的应用程序会受到影响吗?

如果是,如何避免?

0 个答案:

没有答案