我开发了一个.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);
我的担心是:
我更改了可由库外部的应用程序代码访问的流的位置。其他线程可以在恢复流之前访问流(寻求源)。
如果其他线程(例如,由处理请求的代码创建的任务)同时读取同一流该怎么办?
使用我的库的应用程序会受到影响吗?
如果是,如何避免?