【问题标题】:Reading Body on chunked transfer encoded http requests in ASP.NET在 ASP.NET 中读取分块传输编码的 http 请求的正文
【发布时间】:2010-09-09 07:20:38
【问题描述】:

一个 J2ME 客户端正在发送带有分块传输编码的 HTTP POST 请求。

当 ASP.NET(在 IIS6 和 WebDev.exe.server 中)尝试读取请求时,它会将 Content-Length 设置为 0。我想这没关系,因为加载请求时 Content-length 是未知的。

但是,当我将 Request.InputStream 读到最后时,它返回 0。

这是我用来读取输入流的代码。

using (var reader = new StreamReader(httpRequestBodyStream, BodyTextEncoding)) {
    string readString = reader.ReadToEnd();
    Console.WriteLine("CharSize:" + readString.Length);
    return BodyTextEncoding.GetBytes(readString);
}

我可以用 Fiddler 模拟客户端的行为,例如

网址 http://localhost:15148/page.aspx

标题: 用户代理:提琴手 传输编码:分块 主机:somesite.com:15148

身体 兔兔兔兔。谢谢光临,很有用!

我上面的正文阅读器将返回一个长度为零的字节数组...蹩脚...

有人知道如何在 IIS 和 ASP.NET 开发服务器 (cassini) 上启用分块编码吗?

我为 IIS 找到了 this script,但它不起作用。

【问题讨论】:

    标签: asp.net asp.net-mvc chunked-encoding


    【解决方案1】:

    好像是官方的:Cassini does not support Transfer-Encoding: chunked requests.

    默认情况下,客户端发送大 使用分块 HTTP 的二进制流 传输编码。 因为 ASP.NET 开发服务器不支持 这种编码,你不能用 此 Web 服务器托管流式传输 必须接受大数据的数据服务 二进制流。

    【讨论】:

      【解决方案2】:

      那个 url 不再起作用了,所以很难直接测试它。我想知道这是否可行,谷歌在bytes.com 找到了有经验的人。如果您再次启动您的网站,我可以看看这是否真的有效。

      Joerg Jooss 写道:(为简洁起见稍作修改

      string responseText = null;
      WebRequest rabbits= WebRequest.Create(uri);
      using (Stream resp = rabbits.GetResponse().GetResponseStream()) {
          MemoryStream memoryStream = new MemoryStream(0x10000);
          byte[] buffer = new byte[0x1000];
          int bytes;
          while ((bytes = resp.Read(buffer, 0, buffer.Length)) > 0) {
              memoryStream.Write(buffer, 0, bytes);
          }
          // use the encoding to match the data source.
          Encoding enc = Encoding.UTF8;
          reponseText = enc.GetString(memoryStream.ToArray());
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-28
        • 1970-01-01
        • 2011-01-17
        相关资源
        最近更新 更多