1. 程式人生 > 實用技巧 >C# Request.InputStream 讀取輸入流為空的原因處理

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 varstream = HttpContext.Current.Request.InputStream; stream.Position = 0; using(varstreamReader =newStreamReader(stream, Encoding.UTF8)) { requestData = streamReader.ReadToEndAsync().Result;
requestData = ("appKey"+ appKey + requestData +"timestamp"+ timestamp).ToUpper(); stream.Position = 0; }

  

但為什麼Request.InputStream的Length的值在大概在1960左右的時候Position會在結束位置,還不知道原因,希望有大俠指教!