【问题标题】:Get payload in ASP.NET MVC在 ASP.NET MVC 中获取有效负载
【发布时间】:2018-01-22 08:50:19
【问题描述】:

我想读取global.asax 文件中的有效负载。 Chrome 中的有效载荷类似于

当我想在 global.asax 中读取它时,我得到了 610 的 Request.InputStream.Length。当我将它复制到 MemoryStream 时,memstream 的长度切换为 0。

public void Application_BeginRequest(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();
        }
    }

所以最后,text 是空的。

【问题讨论】:

    标签: c# asp.net asp.net-mvc request


    【解决方案1】:

    为什么你需要将输入流复制到另一个我不知道但你可以简单地得到它;

    Request.InputStream.Seek(0,SeekOrigin.Begin);
    using (Stream receiveStream = Request.InputStream)
    {
        using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
        {
            var text = readStream.ReadToEnd();
        }
    }
    

    另外,我不知道您的要求,但这不是处理请求的正确方法。我建议您在操作中获取请求正文。

    【讨论】:

    • 即使我不复制输入流,var text 仍然为空。 receiveStream 的长度为 610,就像它应该的那样,但文本保持为空。
    • 这对我来说很好用,非常感谢!但是你能给我简单解释一下代码吗?
    • 不客气。如果你想把流读到最后,你应该将流的相对位置设置为开始。
    猜你喜欢
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多