CVe*_*tex 5 asp.net asp.net-mvc chunked-encoding
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);
}
Run Code Online (Sandbox Code Playgroud)
我可以用 Fiddler 模拟客户端的行为,例如
网址 http://localhost:15148/page.aspx
标头: 用户代理:Fiddler 传输编码:分块主机:somesite.com:15148
体 兔兔兔兔。谢谢光临,很有用!
我从上面的身体阅读器将返回一个零长度字节数组......跛脚......
有谁知道如何在 IIS 和 ASP.NET 开发服务器 (cassini) 上启用分块编码?
我为 IIS找到了这个脚本,但它不起作用。
该 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());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4126 次 |
| 最近记录: |