c# - 在 asp.net 中对 HttpRequest.InputStream 的线程安全访问
问题描述
我开发了一个 .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);
我担心的是:
我更改了我的库之外的应用程序代码可以访问的流的位置。其他线程可以在我恢复之前访问流(寻找源)。
如果其他线程(例如由处理请求的代码创建的任务)同时读取相同的流怎么办?
使用我的库的应用程序会受到影响吗?
如果是 - 如何避免它?
解决方案
推荐阅读
- java - 您在哪里存储静态数据前端或后端?
- swift - 我从快照 Swift 4 中获取节点密钥,而不是子密钥
- c# - 如何从类库变量中调用方法
- javascript - 我在使用 jquery ajax 加载文本文件内容时遇到了一些问题
- php - Telegram API - 从 Telegram Group 中的垃圾邮件机器人中删除未知垃圾邮件
- lua - roblox 工作室 plr.Name == ""
- menu - Flutter中带有3页的自定义网格菜单
- idris - 伊德里斯:证明复数乘法是结合的
- android - 是否有任何监听器可以从手机存储中删除操作?
- android - 特定行的数据库查询