繁体   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