[英]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.