zoukankan      html  css  js  c++  java
  • C# Request.InputStream 读取输入流为空的原因处理

    转载 C# Request.InputStream 读取输入流为空的原因处理

    今天在手机App测试接口的时候发现一个通过POST方式的接口 获取body中的参数一直为空,但是在数据量小的时候却可以获取到数据,开始怀疑是不是POST的长度有限制,然后在web.config中修改了一下maxRequestLength,如下

    1
    2
    3
    <system.web>
        <httpRuntime targetFramework="4.5" maxRequestLength="20480" />
      </system.web>

    然后发现 获取的值还是为空,然后在调试的过程中发现当数据量多的时候Request.InputStream的Position居然是在结束位置,如下图

    从上图可以看出,因为Request.InputStream肯定是被读过了所以Position会在结束位置,一般Positon都是0。所以获取body中的参数一直为空,知道原因后在读取流之前把Position设置为0就可以了

    1
    2
    3
    4
    5
    6
    7
    8
    var stream = HttpContext.Current.Request.InputStream;
                        stream.Position = 0;
                        using (var streamReader = new StreamReader(stream, Encoding.UTF8))
                        {
                            requestData = streamReader.ReadToEndAsync().Result;
                            requestData = ("appKey" + appKey + requestData + "timestamp" + timestamp).ToUpper();
                            stream.Position = 0;
                        }

      

    但为什么Request.InputStream的Length的值在大概在1960左右的时候Position会在结束位置,还不知道原因,希望有大侠指教!

  • 相关阅读:
    太忙了
    Delphi 的接口(2) 第一个例子
    Delphi 的接口(3) 关于接口的释放
    VS.NET让我做了一场恶梦
    [推荐阅读]The Best Of .The NET 1.x Years
    向大家说声对不起
    [致歉]16:30~17:10电信网络出现问题
    服务器恢复正常
    [SharePoint]更改活动目录(AD)中用户名的问题
    [正式决定]博客园开始接受捐助
  • 原文地址:https://www.cnblogs.com/cxxtreasure/p/14303464.html
Copyright © 2011-2022 走看看