我将字节数组上传到ASHX处理程序
byte[] serializedRequest = SerializeRequest();
var uri = new Uri(_server.ActionUrl);
using (WebClient client = new WebClient())
{
client.UploadData(uri, serializedRequest);
}
处理程序
收到了哪些内容Dim str As Stream = context.Request.InputStream
Dim transformation(str.Length - 1) As Byte ' here I have extra "0"-byte
str.Position = 0
str.Read(transformation, 0, transformation.Length)
如您所见,我必须执行str.Length - 1
来声明字节数组。而这正在发展中。我甚至不知道它在部署时会如何表现。这个字节来自哪里?这是一种可靠的方法,还是应该在流的开头添加一些字节来告诉从Request.InputStream读取多少字节?
答案 0 :(得分:2)
Dim x(y) as Byte
实际上意味着"数组的上界y(长度= y + 1)" (Arrays in VB.NET)。
Dim transformation(str.Length) As Byte
实际上声明了比您需要的更大的数组,因此str.Length - 1
语句是正确的。
实际上没有0值字节,因为Stream.Read()
不需要将流读取到结尾(检查方法返回值)并留下带有默认值(0)的额外字节。