簡體   English   中英

VB.NET InputStream為空

[英]VB.NET InputStream is empty

我正在使用.NET 4.0,並嘗試將Request.InputStream轉換為字符串。 我嘗試了明顯的方法:

Dim req As HttpRequest = HttpContext.Current.Request
' Log input stream length
util.SystemError("inputstream length = " + req.InputStream.Length.ToString, "MBOL")
req.InputStream.Position = 0
Dim encodedString As String = New StreamReader(req.InputStream).ReadToEnd()

這告訴我inputstream的長度是1671,但是我得到的encodeString是空的。 我添加了一個try / catch,但是似乎沒有錯誤,它只是返回一個空字符串。

有什么想法可能會出錯嗎? 在此先感謝您的協助。

輸入流不一定必須多次讀取,而是按合同一次讀取 (盡管特定實現可能會放寬此限制)。

結果,您不能取其長度,因為它實際上是讀取流的。 即使將其位置重置為0也不能保證正常工作(如您所見,也不可行)。

如果要讀取內容之前獲取內容的長度,則需要依賴Content-Length標頭字段。 請注意,服務器不必提供此功能。 獲取內容長度的唯一100%可靠的方法是讀取內容, 然后獲取其長度。

可以說Stream基類根本不應該具有Length屬性。 這是一個較弱的設計。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM