HttpWebRequest使用post上传数据,webapi接收

 前端传一个json对象,后端用字典接收

byte[] data = new byte[HttpContext.Current.Request.InputStream.Length];
            HttpContext.Current.Request.InputStream.Read(data, 0, data.Length);
            string txt = System.Text.Encoding.UTF8.GetString(data);
            MemoryStream ms = null;
            try
            {
                Dictionary<string, object> dictionary = null;
                dictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(txt);
                var imageStr = dictionary["imageStr"].ToString();
                var userRefid = dictionary["userRefid"].ToString();

 

 

问题描述:

1、网站向WebApi(以下简称Api) Post数据;

2、Api的过滤器先处理验证,通过HttpContext.Current.Request.InputStream获取网站Post过来的流数据;

3、问题出现了,如果我网站Post一个字节小于1000(大概是这个数目)的数据都没问题,如果我Post一个字节大于1000的就有问题了。当大于1000的时候,Api中获取的InputStream数据为空,但是如果去掉过滤器验证,直接跳到Api的控制器,这时Api的控制器就能获取到数据。详情见下图。

 

这是成功的Post请求:

这时,如果我再添加一点Post的数据量,问题就出现了,见下图:

只要StreamReader读过1次,stream.Position的值就不为0。

因此在StreamReader读取之前,加上stream.Position = 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值