Asp.Net中自以为是的Encode

时间:2021-08-31 08:07:34

Asp.Net 引擎可能是不错,但是它把程序员想的太笨,会自以为是做很多自动的 Encode 和 Decode,以下文举例:

如果客户端我们 post 了如下的数据,

Asp.Net中自以为是的Encode

但是你实际得到的是:

Asp.Net中自以为是的Encode

也就是说,默认的调用 Asp.Net 引擎提供给我们的方法:

byte[] bytesToPost = httpLocalRequest.ContentEncoding.GetBytes(httpLocalRequest.Form.ToString());

我们将会得到一个错误的结果。

我们必须:

byte[] bytesToPost = ReadFully(httpLocalRequest.InputStream);
 

private byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16 * 1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }

        return ms.ToArray();
    }
}