C# Request.InputStream 讀取輸入流為空的原因處理


今天在手機App測試接口的時候發現一個通過POST方式的接口 獲取body中的參數一直為空,但是在數據量小的時候卻可以獲取到數據,開始懷疑是不是POST的長度有限制,然后在web.config中修改了一下maxRequestLength,如下

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

然后發現 獲取的值還是為空,然后在調試的過程中發現當數據量多的時候Request.InputStream的Position居然是在結束位置,如下圖

從上圖可以看出,因為Request.InputStream肯定是被讀過了所以Position會在結束位置,一般Positon都是0。所以獲取body中的參數一直為空,知道原因后在讀取流之前把Position設置為0就可以了

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會在結束位置,還不知道原因,希望有大俠指教!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM