【发布时间】:2011-06-15 18:53:18
【问题描述】:
在HttpApplication.BeginRequest 事件中,如何读取整个原始请求正文?当我尝试阅读它时,InputStream 的长度为 0,让我相信它可能已经被 ASP.NET 读取了。
我尝试像这样读取 InputStream:
using (StreamReader reader = new StreamReader(context.Request.InputStream))
{
string text = reader.ReadToEnd();
}
但我得到的只是一个空字符串。我已将位置重置回 0,但是当然,一旦读取了流,它就永远消失了,所以这不起作用。最后,检查流的长度返回 0。
编辑:这是针对 POST 请求的。
【问题讨论】:
-
你读的怎么样?
-
如果我把它放在 Global.asax 的 Application_BeginRequest 方法中,你的代码就可以工作
-
如果您将代码放入 Application_BeginRequest 并且您使用的是 .Net 4.5,请使用以下构造函数来保持流打开,以便 ASP.NET 可以在您之后读取它: StreamReader(request.InputStream, Encoding.UTF8 , 真, 1024, 真