【问题标题】:Why Request.InputStream contains extra byte?为什么 Request.InputStream 包含额外的字节?
【发布时间】:2015-06-01 16:52:26
【问题描述】:

我正在将字节数组上传到 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 中读取多少字节?

【问题讨论】:

    标签: c# .net vb.net ashx


    【解决方案1】:

    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)值的额外字节。

    【讨论】:

    • 你完全正确!!这是我的VB故障!谢谢
    猜你喜欢
    • 2013-11-24
    • 2018-07-20
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多