加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在ASP.NET中获取原始请求体?

发布时间:2020-12-16 00:42:36 所属栏目:asp.Net 来源:网络整理
导读:在HttpApplication.BeginRequest事件中,如何读取整个原始请求正文?当我尝试读它时,InputStream的长度为0,导致我相信它可能已经被ASP.NET读取了。 我试图读这个InputStream: using (StreamReader reader = new StreamReader(context.Request.InputStream
在HttpApplication.BeginRequest事件中,如何读取整个原始请求正文?当我尝试读它时,InputStream的长度为0,导致我相信它可能已经被ASP.NET读取了。

我试图读这个InputStream:

using (StreamReader reader = new StreamReader(context.Request.InputStream))
{
    string text = reader.ReadToEnd();
}

但我得到的是一个空字符串。我把这个位置重新设置为0,但是当然,一旦这个流被读出来,它就没有了,所以没有办法。最后,检查流的长度返回0。

编辑:这是用于POST请求。

解决方法

请求对象未填充在BeginRequest事件中。您需要在事件生命周期中稍后访问此对象,例如Init,Load或PreRender。此外,您可能希望将输入流复制到内存流,因此可以使用seek:
protected void Page_Load(object sender,EventArgs e)
{
    MemoryStream memstream = new MemoryStream();
    Request.InputStream.CopyTo(memstream);
    memstream.Position = 0;
    using (StreamReader reader = new StreamReader(memstream))
    {
        string text = reader.ReadToEnd();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读