公司有位大神发现的问题,给出的解决方案,在此记录一下。
在ASP.NET中,当Post Body中的数据量过大的时候(超过maximum request length),.NET会把超过的部分放入Buffered Stream中,在读取完这个Buffered Stream,才能读取Request的InputStream,否则,会抛出异常 。
public void ResponseHandler(HttpContext httpContext) { var s=new StreamReader(this.httpContext.Request.InputStream);//会报错 var r=s.ReadToEnd(); }
应改为:
public void ResponseHandler(HttpContext httpContext) { var streamReader = new StreamReader(stream=Request.GetBufferedInputStream()); var streamRead = streamReader.ReadToEnd(); var s=new StreamReader(this.httpContext.Request.InputStream); var r=s.ReadToEnd(); }